From 9ee1a04a5c132c47eb169d68682146106e5c1558 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Thu, 18 Sep 2025 21:59:14 +0200 Subject: [PATCH 01/20] move Kontor related components to subfolder kontor --- kontor-angular/angular.json | 1 - kontor-angular/src/app/app.component.html | 1 + kontor-angular/src/app/app.component.ts | 3 +- kontor-angular/src/app/app.config.ts | 5 +- kontor-angular/src/app/app.routes.ts | 59 ++++++------------- .../artist-detail/artist-detail.component.css | 5 -- .../artist-detail.component.html | 5 -- .../artist-detail/artist-detail.component.ts | 14 ----- .../comic-overview.component.html | 16 ----- .../comic-overview.component.ts | 12 ---- .../comic-list/comic-list.component.html | 1 - .../comic/comic-list/comic-list.component.ts | 11 ---- .../publisher-list.component.html | 1 - .../publisher-list.component.spec.ts | 23 -------- .../publisher-list.component.ts | 11 ---- .../artist-list/artist-list.component.css | 0 .../artist-list/artist-list.component.html | 2 +- .../artist-list/artist-list.component.spec.ts | 0 .../artist-list/artist-list.component.ts | 15 +++-- .../comic/artists}/artist.model.ts | 0 .../artists/artist/artist.component.css} | 0 .../artists/artist/artist.component.html | 5 ++ .../artists/artist/artist.component.spec.ts} | 12 ++-- .../comic/artists/artist/artist.component.ts | 13 ++++ .../comic/artists/artists.component.css} | 0 .../comic/artists/artists.component.html | 7 +++ .../comic/artists/artists.component.spec.ts} | 12 ++-- .../kontor/comic/artists/artists.component.ts | 12 ++++ .../comic/artists/artists.service.ts} | 10 ++-- .../comic-navigation.component.css} | 0 .../comic-navigation.component.html | 5 ++ .../comic-navigation.component.spec.ts | 23 ++++++++ .../comic-navigation.component.ts | 12 ++++ .../comic/comic-section.component.css} | 0 .../kontor/comic/comic-section.component.html | 2 + .../comic/comic-section.component.spec.ts | 23 ++++++++ .../kontor/comic/comic-section.component.ts | 13 ++++ .../src/app/kontor/comic/comic.routes.ts | 39 ++++++++++++ .../comic-details.component.css} | 0 .../comic-details.component.html | 7 +++ .../comic-details.component.spec.ts} | 12 ++-- .../comic-details/comic-details.component.ts | 13 ++++ .../comic-list/comic-list.component.css} | 0 .../comic-list/comic-list.component.html | 8 +++ .../comic-list/comic-list.component.spec.ts | 0 .../comics/comic-list/comic-list.component.ts | 38 ++++++++++++ .../app/kontor/comic/comics/comic.model.ts | 5 ++ .../comic/comics/comic/comic.component.css} | 0 .../comic/comics/comic/comic.component.html | 6 ++ .../comics/comic/comic.component.spec.ts} | 12 ++-- .../comic/comics/comic/comic.component.ts | 13 ++++ .../comic/comics/comics.component.css} | 0 .../kontor/comic/comics/comics.component.html | 4 ++ .../comic/comics/comics.component.spec.ts | 23 ++++++++ .../kontor/comic/comics/comics.component.ts | 12 ++++ .../app/kontor/comic/comics/comics.service.ts | 29 +++++++++ .../publishers/publishers.component.css} | 0 .../publishers/publishers.component.html | 1 + .../publishers/publishers.component.spec.ts} | 12 ++-- .../comic/publishers/publishers.component.ts | 11 ++++ .../kontor-footer/kontor-footer.component.css | 9 +++ .../kontor-footer.component.html | 3 + .../kontor-footer.component.spec.ts} | 12 ++-- .../kontor-footer/kontor-footer.component.ts | 11 ++++ .../app/kontor/header/header.component.html | 14 ----- .../src/app/kontor/header/header.component.ts | 2 +- .../kontor-header/kontor-header.component.css | 9 +++ .../kontor-header.component.html | 5 ++ .../kontor-header.component.spec.ts | 23 ++++++++ .../kontor-header/kontor-header.component.ts | 11 ++++ .../kontor-home/kontor-home.component.css} | 0 .../kontor-home/kontor-home.component.html | 1 + .../kontor-home.component.spec.ts} | 12 ++-- .../home/kontor-home/kontor-home.component.ts | 11 ++++ .../media-actors/media-actors.component.css} | 0 .../media-actors/media-actors.component.html | 1 + .../media-actors.component.spec.ts} | 12 ++-- .../media-actors/media-actors.component.ts | 11 ++++ .../media-files/media-files.component.css} | 0 .../media-files/media-files.component.html | 1 + .../media-files/media-files.component.spec.ts | 23 ++++++++ .../media-files/media-files.component.ts | 11 ++++ .../media-navigation.component.css} | 0 .../media-navigation.component.html | 5 ++ .../media-navigation.component.spec.ts | 23 ++++++++ .../media-navigation.component.ts | 12 ++++ .../media-videos/media-videos.component.css} | 0 .../media-videos/media-videos.component.html | 1 + .../media-videos.component.spec.ts | 23 ++++++++ .../media-videos/media-videos.component.ts | 11 ++++ .../media/media.component.css} | 0 .../src/app/kontor/media/media.component.html | 2 + .../app/kontor/media/media.component.spec.ts | 23 ++++++++ .../src/app/kontor/media/media.component.ts | 13 ++++ .../src/app/kontor/media/media.routes.ts | 26 ++++++++ .../kontor-navigation.component.css | 1 + .../kontor-navigation.component.html | 6 ++ .../kontor-navigation.component.spec.ts | 23 ++++++++ .../kontor-navigation.component.ts | 12 ++++ .../tysc/cardsets/cardsets.component.css | 0 .../tysc/cardsets/cardsets.component.html | 1 + .../tysc/cardsets/cardsets.component.spec.ts | 23 ++++++++ .../tysc/cardsets/cardsets.component.ts | 11 ++++ .../kontor/tysc/players/players.component.css | 0 .../tysc/players/players.component.html | 1 + .../tysc/players/players.component.spec.ts | 23 ++++++++ .../kontor/tysc/players/players.component.ts | 11 ++++ .../tysc/positions/positions.component.css | 0 .../tysc/positions/positions.component.html | 1 + .../positions/positions.component.spec.ts | 23 ++++++++ .../tysc/positions/positions.component.ts | 11 ++++ .../kontor/tysc/sports/sports.component.css | 0 .../kontor/tysc/sports/sports.component.html | 1 + .../tysc/sports/sports.component.spec.ts | 23 ++++++++ .../kontor/tysc/sports/sports.component.ts | 11 ++++ .../app/kontor/tysc/teams/teams.component.css | 0 .../kontor/tysc/teams/teams.component.html | 1 + .../kontor/tysc/teams/teams.component.spec.ts | 23 ++++++++ .../app/kontor/tysc/teams/teams.component.ts | 11 ++++ .../tysc-navigation.component.css | 0 .../tysc-navigation.component.html | 7 +++ .../tysc-navigation.component.spec.ts | 23 ++++++++ .../tysc-navigation.component.ts | 12 ++++ .../kontor/tysc/tysc-section.component.css | 0 .../kontor/tysc/tysc-section.component.html | 2 + .../tysc/tysc-section.component.spec.ts | 23 ++++++++ .../app/kontor/tysc/tysc-section.component.ts | 13 ++++ .../src/app/kontor/tysc/tysc.routes.ts | 36 +++++++++++ .../kontor/tysc/vendors/vendors.component.css | 0 .../tysc/vendors/vendors.component.html | 1 + .../tysc/vendors/vendors.component.spec.ts | 23 ++++++++ .../kontor/tysc/vendors/vendors.component.ts | 11 ++++ .../media-actor-list.component.html | 1 - .../media-actor-list.component.spec.ts | 23 -------- .../media-actor-list.component.ts | 11 ---- .../media-file-list.component.html | 1 - .../media-file-list.component.spec.ts | 23 -------- .../media-file-list.component.ts | 11 ---- .../media-overview.component.html | 16 ----- .../media-overview.component.spec.ts | 23 -------- .../media-overview.component.ts | 12 ---- .../media-video-list.component.html | 1 - .../media-video-list.component.spec.ts | 23 -------- .../media-video-list.component.ts | 11 ---- .../cardset-list/cardset-list.component.html | 1 - .../cardset-list/cardset-list.component.ts | 11 ---- .../player-list/player-list.component.html | 1 - .../player-list/player-list.component.ts | 11 ---- .../position-list.component.html | 1 - .../position-list/position-list.component.ts | 11 ---- .../sport-list/sport-list.component.html | 8 --- .../sport/sport-list/sport-list.component.ts | 38 ------------ .../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.html | 1 - .../team/team-list/team-list.component.ts | 11 ---- .../tysc/tysc-menu/tysc-menu.component.html | 8 --- .../app/tysc/tysc-menu/tysc-menu.component.ts | 12 ---- .../vendor-list/vendor-list.component.html | 1 - .../vendor-list/vendor-list.component.spec.ts | 23 -------- .../vendor-list/vendor-list.component.ts | 11 ---- 164 files changed, 1045 insertions(+), 597 deletions(-) delete mode 100644 kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.css delete mode 100644 kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.html delete mode 100644 kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.ts delete mode 100644 kontor-angular/src/app/comic/comic-overview/comic-overview.component.html delete mode 100644 kontor-angular/src/app/comic/comic-overview/comic-overview.component.ts delete mode 100644 kontor-angular/src/app/comic/comic/comic-list/comic-list.component.html delete mode 100644 kontor-angular/src/app/comic/comic/comic-list/comic-list.component.ts delete mode 100644 kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.html delete mode 100644 kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.spec.ts delete mode 100644 kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.ts rename kontor-angular/src/app/{comic/artist => kontor/comic/artists}/artist-list/artist-list.component.css (100%) rename kontor-angular/src/app/{comic/artist => kontor/comic/artists}/artist-list/artist-list.component.html (64%) rename kontor-angular/src/app/{comic/artist => kontor/comic/artists}/artist-list/artist-list.component.spec.ts (100%) rename kontor-angular/src/app/{comic/artist => kontor/comic/artists}/artist-list/artist-list.component.ts (72%) rename kontor-angular/src/app/{comic/artist => kontor/comic/artists}/artist.model.ts (100%) rename kontor-angular/src/app/{comic/comic-overview/comic-overview.component.css => kontor/comic/artists/artist/artist.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/comic/artists/artist/artist.component.html rename kontor-angular/src/app/{tysc/tysc-menu/tysc-menu.component.spec.ts => kontor/comic/artists/artist/artist.component.spec.ts} (54%) create mode 100644 kontor-angular/src/app/kontor/comic/artists/artist/artist.component.ts rename kontor-angular/src/app/{comic/comic/comic-list/comic-list.component.css => kontor/comic/artists/artists.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/comic/artists/artists.component.html rename kontor-angular/src/app/{tysc/team/team-list/team-list.component.spec.ts => kontor/comic/artists/artists.component.spec.ts} (54%) create mode 100644 kontor-angular/src/app/kontor/comic/artists/artists.component.ts rename kontor-angular/src/app/{comic/artist/artist.service.ts => kontor/comic/artists/artists.service.ts} (82%) rename kontor-angular/src/app/{comic/publisher/publisher-list/publisher-list.component.css => kontor/comic/comic-navigation/comic-navigation.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.html create mode 100644 kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.ts rename kontor-angular/src/app/{media/media-actor/media-actor-list/media-actor-list.component.css => kontor/comic/comic-section.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/comic/comic-section.component.html create mode 100644 kontor-angular/src/app/kontor/comic/comic-section.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-section.component.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic.routes.ts rename kontor-angular/src/app/{media/media-file/media-file-list/media-file-list.component.css => kontor/comic/comics/comic-details/comic-details.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.html rename kontor-angular/src/app/{tysc/position/position-list/position-list.component.spec.ts => kontor/comic/comics/comic-details/comic-details.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.ts rename kontor-angular/src/app/{media/media-overview/media-overview.component.css => kontor/comic/comics/comic-list/comic-list.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.html rename kontor-angular/src/app/{comic/comic => kontor/comic/comics}/comic-list/comic-list.component.spec.ts (100%) create mode 100644 kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.ts create mode 100644 kontor-angular/src/app/kontor/comic/comics/comic.model.ts rename kontor-angular/src/app/{media/media-video/media-video-list/media-video-list.component.css => kontor/comic/comics/comic/comic.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/comic/comics/comic/comic.component.html rename kontor-angular/src/app/{comic/comic-overview/comic-overview.component.spec.ts => kontor/comic/comics/comic/comic.component.spec.ts} (55%) create mode 100644 kontor-angular/src/app/kontor/comic/comics/comic/comic.component.ts rename kontor-angular/src/app/{tysc/cardset/cardset-list/cardset-list.component.css => kontor/comic/comics/comics.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/comic/comics/comics.component.html create mode 100644 kontor-angular/src/app/kontor/comic/comics/comics.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/comic/comics/comics.component.ts create mode 100644 kontor-angular/src/app/kontor/comic/comics/comics.service.ts rename kontor-angular/src/app/{tysc/player/player-list/player-list.component.css => kontor/comic/publishers/publishers.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/comic/publishers/publishers.component.html rename kontor-angular/src/app/{tysc/sport/sport-list/sport-list.component.spec.ts => kontor/comic/publishers/publishers.component.spec.ts} (53%) create mode 100644 kontor-angular/src/app/kontor/comic/publishers/publishers.component.ts create mode 100644 kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.css create mode 100644 kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.html rename kontor-angular/src/app/{comic/artist/artist-detail/artist-detail.component.spec.ts => kontor/footer/kontor-footer/kontor-footer.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.ts create mode 100644 kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.css create mode 100644 kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.html create mode 100644 kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.ts rename kontor-angular/src/app/{tysc/position/position-list/position-list.component.css => kontor/home/kontor-home/kontor-home.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.html rename kontor-angular/src/app/{tysc/player/player-list/player-list.component.spec.ts => kontor/home/kontor-home/kontor-home.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.ts rename kontor-angular/src/app/{tysc/sport/sport-list/sport-list.component.css => kontor/media/media-actors/media-actors.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/media/media-actors/media-actors.component.html rename kontor-angular/src/app/{tysc/cardset/cardset-list/cardset-list.component.spec.ts => kontor/media/media-actors/media-actors.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/kontor/media/media-actors/media-actors.component.ts rename kontor-angular/src/app/{tysc/sport/sport-selector/sport-selector.component.css => kontor/media/media-files/media-files.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/media/media-files/media-files.component.html create mode 100644 kontor-angular/src/app/kontor/media/media-files/media-files.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/media/media-files/media-files.component.ts rename kontor-angular/src/app/{tysc/team/team-list/team-list.component.css => kontor/media/media-navigation/media-navigation.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html create mode 100644 kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.ts rename kontor-angular/src/app/{tysc/tysc-menu/tysc-menu.component.css => kontor/media/media-videos/media-videos.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/media/media-videos/media-videos.component.html create mode 100644 kontor-angular/src/app/kontor/media/media-videos/media-videos.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/media/media-videos/media-videos.component.ts rename kontor-angular/src/app/{tysc/vendor/vendor-list/vendor-list.component.css => kontor/media/media.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/media/media.component.html create mode 100644 kontor-angular/src/app/kontor/media/media.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/media/media.component.ts create mode 100644 kontor-angular/src/app/kontor/media/media.routes.ts create mode 100644 kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.css create mode 100644 kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.html create mode 100644 kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.ts create mode 100644 kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.css create mode 100644 kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.html create mode 100644 kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.ts create mode 100644 kontor-angular/src/app/kontor/tysc/players/players.component.css create mode 100644 kontor-angular/src/app/kontor/tysc/players/players.component.html create mode 100644 kontor-angular/src/app/kontor/tysc/players/players.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/tysc/players/players.component.ts create mode 100644 kontor-angular/src/app/kontor/tysc/positions/positions.component.css create mode 100644 kontor-angular/src/app/kontor/tysc/positions/positions.component.html create mode 100644 kontor-angular/src/app/kontor/tysc/positions/positions.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/tysc/positions/positions.component.ts create mode 100644 kontor-angular/src/app/kontor/tysc/sports/sports.component.css create mode 100644 kontor-angular/src/app/kontor/tysc/sports/sports.component.html create mode 100644 kontor-angular/src/app/kontor/tysc/sports/sports.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/tysc/sports/sports.component.ts create mode 100644 kontor-angular/src/app/kontor/tysc/teams/teams.component.css create mode 100644 kontor-angular/src/app/kontor/tysc/teams/teams.component.html create mode 100644 kontor-angular/src/app/kontor/tysc/teams/teams.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/tysc/teams/teams.component.ts create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.css create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.html create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.ts create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-section.component.css create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-section.component.html create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-section.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-section.component.ts create mode 100644 kontor-angular/src/app/kontor/tysc/tysc.routes.ts create mode 100644 kontor-angular/src/app/kontor/tysc/vendors/vendors.component.css create mode 100644 kontor-angular/src/app/kontor/tysc/vendors/vendors.component.html create mode 100644 kontor-angular/src/app/kontor/tysc/vendors/vendors.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/tysc/vendors/vendors.component.ts delete mode 100644 kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.html delete mode 100644 kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts delete 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-file/media-file-list/media-file-list.component.html delete mode 100644 kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.spec.ts delete 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-overview/media-overview.component.html delete mode 100644 kontor-angular/src/app/media/media-overview/media-overview.component.spec.ts delete mode 100644 kontor-angular/src/app/media/media-overview/media-overview.component.ts delete mode 100644 kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.html delete mode 100644 kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts delete mode 100644 kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.ts delete mode 100644 kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.html delete mode 100644 kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.ts delete mode 100644 kontor-angular/src/app/tysc/player/player-list/player-list.component.html delete mode 100644 kontor-angular/src/app/tysc/player/player-list/player-list.component.ts delete mode 100644 kontor-angular/src/app/tysc/position/position-list/position-list.component.html delete mode 100644 kontor-angular/src/app/tysc/position/position-list/position-list.component.ts delete mode 100644 kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.html delete mode 100644 kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.ts delete mode 100644 kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.html delete mode 100644 kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.spec.ts delete mode 100644 kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.ts delete mode 100644 kontor-angular/src/app/tysc/sport/sport.model.ts delete mode 100644 kontor-angular/src/app/tysc/sport/sport.service.ts delete mode 100644 kontor-angular/src/app/tysc/team/team-list/team-list.component.html delete mode 100644 kontor-angular/src/app/tysc/team/team-list/team-list.component.ts delete mode 100644 kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.html delete mode 100644 kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.ts delete mode 100644 kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.html delete mode 100644 kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.spec.ts delete mode 100644 kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.ts diff --git a/kontor-angular/angular.json b/kontor-angular/angular.json index 6c196b3..96caa46 100644 --- a/kontor-angular/angular.json +++ b/kontor-angular/angular.json @@ -15,7 +15,6 @@ "options": { "browser": "src/main.ts", "polyfills": [ - "zone.js" ], "tsConfig": "tsconfig.app.json", "assets": [ diff --git a/kontor-angular/src/app/app.component.html b/kontor-angular/src/app/app.component.html index def9b90..0fc5b3d 100644 --- a/kontor-angular/src/app/app.component.html +++ b/kontor-angular/src/app/app.component.html @@ -1,5 +1,6 @@
+
diff --git a/kontor-angular/src/app/app.component.ts b/kontor-angular/src/app/app.component.ts index f8f2137..a4f231b 100644 --- a/kontor-angular/src/app/app.component.ts +++ b/kontor-angular/src/app/app.component.ts @@ -2,10 +2,11 @@ import { Component } from '@angular/core'; import { RouterOutlet } from '@angular/router'; import { KontorHeaderComponent } from "./kontor/header/header.component"; import { KontorFooterComponent } from './kontor/footer/footer.component'; +import { KontorNavigationComponent } from "./kontor/navigation/kontor-navigation/kontor-navigation.component"; @Component({ selector: 'app-root', - imports: [RouterOutlet, KontorHeaderComponent, KontorFooterComponent], + imports: [RouterOutlet, KontorHeaderComponent, KontorFooterComponent, KontorNavigationComponent], templateUrl: './app.component.html', styleUrl: './app.component.css' }) diff --git a/kontor-angular/src/app/app.config.ts b/kontor-angular/src/app/app.config.ts index 97842c8..874fd39 100644 --- a/kontor-angular/src/app/app.config.ts +++ b/kontor-angular/src/app/app.config.ts @@ -1,4 +1,4 @@ -import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection } from '@angular/core'; +import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection, provideZonelessChangeDetection } from '@angular/core'; import { provideRouter, withComponentInputBinding } from '@angular/router'; import { routes } from './app.routes'; @@ -7,7 +7,8 @@ import { provideHttpClient } from '@angular/common/http'; export const appConfig: ApplicationConfig = { providers: [ provideBrowserGlobalErrorListeners(), - provideZoneChangeDetection({ eventCoalescing: true }), + provideZonelessChangeDetection(), + // provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes, withComponentInputBinding()), provideHttpClient(), ] diff --git a/kontor-angular/src/app/app.routes.ts b/kontor-angular/src/app/app.routes.ts index 7740668..9b196dd 100644 --- a/kontor-angular/src/app/app.routes.ts +++ b/kontor-angular/src/app/app.routes.ts @@ -1,52 +1,27 @@ import { Routes } from '@angular/router'; -import { KontorComponent } from './kontor/kontor.component'; -import { Login } from './common/login/login'; -import { ComicOverviewComponent } from './comic/comic-overview/comic-overview.component'; -import { MediaOverviewComponent } from './media/media-overview/media-overview.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'; +import { routes as comicRoutes } from './kontor/comic/comic.routes'; +import { routes as tyscRoutes } from './kontor/tysc/tysc.routes'; +import { routes as mediaRoutes } from './kontor/media/media.routes'; +import { TyscSectionComponent } from './kontor/tysc/tysc-section.component'; +import { ComicSectionComponent } from './kontor/comic/comic-section.component'; +import { MediaComponent } from './kontor/media/media.component'; +import { KontorHomeComponent } from './kontor/home/kontor-home/kontor-home.component'; export const routes: Routes = [ - { path: '', component: KontorComponent, }, - { path: 'login', component: Login, }, { - path: 'comic', component: ComicOverviewComponent, - children: [ - { path: '', component: ComicListComponent}, - { path: 'comics', component: ComicListComponent}, - { path: 'publisher', component: PublisherListComponent}, - { path: 'artist', component: ArtistListComponent}, - ], + path: '', + component: KontorHomeComponent, }, { - 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: 'comic', component: ComicSectionComponent, + children: comicRoutes, }, { - path: 'media', component: MediaOverviewComponent, - children: [ - { path: '', component: MediaFileListComponent}, - { path: 'mediafiles', component: MediaFileListComponent}, - { path: 'mediaactors', component: MediaActorListComponent}, - { path: 'mediavideos', component: MediaVideoListComponent}, - ], + path: 'tysc', component: TyscSectionComponent, + children: tyscRoutes, + }, + { + path: 'media', component: MediaComponent, + children: mediaRoutes, }, ]; diff --git a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.css b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.css deleted file mode 100644 index c34bfa6..0000000 --- a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.css +++ /dev/null @@ -1,5 +0,0 @@ -div { - border-radius: 6px; - box-shadow: 0 1px 6px rgba(0, 0, 0, 0.1); - overflow: hidden; -} diff --git a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.html b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.html deleted file mode 100644 index 8c949f3..0000000 --- a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.html +++ /dev/null @@ -1,5 +0,0 @@ -
- - {{ artist().name }} - -
diff --git a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.ts b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.ts deleted file mode 100644 index 5bf9f95..0000000 --- a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Component, input, signal } from '@angular/core'; -import { Artist } from '../artist.model'; -import { RouterLink, RouterLinkActive } from '@angular/router'; - -@Component({ - selector: 'app-artist-detail', - imports: [RouterLink, RouterLinkActive], - templateUrl: './artist-detail.component.html', - styleUrl: './artist-detail.component.css' -}) -export class ArtistDetailComponent { - artist = input.required(); - -} 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 deleted file mode 100644 index 54c8b3c..0000000 --- a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.html +++ /dev/null @@ -1,16 +0,0 @@ - - - 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 deleted file mode 100644 index 32c15f4..0000000 --- a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component } from '@angular/core'; -import { RouterLink, RouterOutlet, RouterLinkActive } from '@angular/router'; - -@Component({ - selector: 'app-comic-overview', - imports: [RouterLink, RouterOutlet, RouterLinkActive], - templateUrl: './comic-overview.component.html', - styleUrl: './comic-overview.component.css' -}) -export class ComicOverviewComponent { - -} 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 deleted file mode 100644 index 5beb054..0000000 --- a/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

comic-list works!

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 deleted file mode 100644 index a09eb12..0000000 --- a/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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/publisher/publisher-list/publisher-list.component.html b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.html deleted file mode 100644 index d533325..0000000 --- a/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

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 deleted file mode 100644 index 00f7266..0000000 --- a/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -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/publisher-list.component.ts b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.ts deleted file mode 100644 index 43daa01..0000000 --- a/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-publisher-list', - imports: [], - templateUrl: './publisher-list.component.html', - styleUrl: './publisher-list.component.css' -}) -export class PublisherListComponent { - -} diff --git a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.css b/kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.css similarity index 100% rename from kontor-angular/src/app/comic/artist/artist-list/artist-list.component.css rename to kontor-angular/src/app/kontor/comic/artists/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/kontor/comic/artists/artist-list/artist-list.component.html similarity index 64% rename from kontor-angular/src/app/comic/artist/artist-list/artist-list.component.html rename to kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.html index 984357c..4912d0a 100644 --- a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.html +++ b/kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.html @@ -1,7 +1,7 @@
    @for (artist of artists(); track artist.id) {
  • - +
  • }
diff --git a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.spec.ts b/kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.spec.ts similarity index 100% rename from kontor-angular/src/app/comic/artist/artist-list/artist-list.component.spec.ts rename to kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.spec.ts diff --git a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.ts b/kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.ts similarity index 72% rename from kontor-angular/src/app/comic/artist/artist-list/artist-list.component.ts rename to kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.ts index 441b24a..71d78ab 100644 --- a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.ts +++ b/kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.ts @@ -1,11 +1,11 @@ +import { ArtistComponent } from './../artist/artist.component'; import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; import { Artist } from '../artist.model'; -import { ArtistService } from '../artist.service'; -import { ArtistDetailComponent } from "../artist-detail/artist-detail.component"; +import { ArtistsService } from '../artists.service'; @Component({ selector: 'app-artist-list', - imports: [ArtistDetailComponent], + imports: [ArtistComponent], templateUrl: './artist-list.component.html', styleUrl: './artist-list.component.css' }) @@ -13,12 +13,12 @@ export class ArtistListComponent implements OnInit { artists = signal(undefined); isFetching = signal(false); error = signal(''); - private artistService = inject(ArtistService); + private artistsService = inject(ArtistsService); private destroyRef = inject(DestroyRef); ngOnInit() { this.isFetching.set(true); - const subscription = this.artistService.loadArtists().subscribe({ + const subscription = this.artistsService.loadArtists().subscribe({ next: (artists) => { this.artists.set(artists); }, @@ -27,12 +27,11 @@ export class ArtistListComponent implements OnInit { }, complete: () => { this.isFetching.set(false); - }, + } }); this.destroyRef.onDestroy(() => { subscription.unsubscribe(); - }); + }) } - } diff --git a/kontor-angular/src/app/comic/artist/artist.model.ts b/kontor-angular/src/app/kontor/comic/artists/artist.model.ts similarity index 100% rename from kontor-angular/src/app/comic/artist/artist.model.ts rename to kontor-angular/src/app/kontor/comic/artists/artist.model.ts diff --git a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.css b/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.css similarity index 100% rename from kontor-angular/src/app/comic/comic-overview/comic-overview.component.css rename to kontor-angular/src/app/kontor/comic/artists/artist/artist.component.css diff --git a/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.html b/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.html new file mode 100644 index 0000000..de0a005 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.html @@ -0,0 +1,5 @@ + diff --git a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.spec.ts b/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.spec.ts similarity index 54% rename from kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.spec.ts rename to kontor-angular/src/app/kontor/comic/artists/artist/artist.component.spec.ts index 61baa16..fe60ea6 100644 --- a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.spec.ts +++ b/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { TyscMenuComponent } from './tysc-menu.component'; +import { ArtistComponent } from './artist.component'; -describe('TyscMenuComponent', () => { - let component: TyscMenuComponent; - let fixture: ComponentFixture; +describe('ArtistComponent', () => { + let component: ArtistComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [TyscMenuComponent] + imports: [ArtistComponent] }) .compileComponents(); - fixture = TestBed.createComponent(TyscMenuComponent); + fixture = TestBed.createComponent(ArtistComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.ts b/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.ts new file mode 100644 index 0000000..5903c94 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.ts @@ -0,0 +1,13 @@ +import { Component, input } from '@angular/core'; +import { RouterLink, RouterLinkActive } from '@angular/router'; +import { Artist } from '../artist.model'; + +@Component({ + selector: 'app-artist', + imports: [RouterLink, RouterLinkActive], + templateUrl: './artist.component.html', + styleUrl: './artist.component.css' +}) +export class ArtistComponent { + artist = input.required(); +} diff --git a/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.css b/kontor-angular/src/app/kontor/comic/artists/artists.component.css similarity index 100% rename from kontor-angular/src/app/comic/comic/comic-list/comic-list.component.css rename to kontor-angular/src/app/kontor/comic/artists/artists.component.css diff --git a/kontor-angular/src/app/kontor/comic/artists/artists.component.html b/kontor-angular/src/app/kontor/comic/artists/artists.component.html new file mode 100644 index 0000000..4e1ec74 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/artists/artists.component.html @@ -0,0 +1,7 @@ +

artists works!

+
+ +
+
+

Artist Details

+
diff --git a/kontor-angular/src/app/tysc/team/team-list/team-list.component.spec.ts b/kontor-angular/src/app/kontor/comic/artists/artists.component.spec.ts similarity index 54% rename from kontor-angular/src/app/tysc/team/team-list/team-list.component.spec.ts rename to kontor-angular/src/app/kontor/comic/artists/artists.component.spec.ts index b8a8711..be721bf 100644 --- a/kontor-angular/src/app/tysc/team/team-list/team-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/comic/artists/artists.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { TeamListComponent } from './team-list.component'; +import { ArtistsComponent } from './artists.component'; -describe('TeamListComponent', () => { - let component: TeamListComponent; - let fixture: ComponentFixture; +describe('ArtistsComponent', () => { + let component: ArtistsComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [TeamListComponent] + imports: [ArtistsComponent] }) .compileComponents(); - fixture = TestBed.createComponent(TeamListComponent); + fixture = TestBed.createComponent(ArtistsComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/comic/artists/artists.component.ts b/kontor-angular/src/app/kontor/comic/artists/artists.component.ts new file mode 100644 index 0000000..f063a8e --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/artists/artists.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { ArtistListComponent } from "./artist-list/artist-list.component"; + +@Component({ + selector: 'app-artists', + imports: [ArtistListComponent], + templateUrl: './artists.component.html', + styleUrl: './artists.component.css' +}) +export class ArtistsComponent { + +} diff --git a/kontor-angular/src/app/comic/artist/artist.service.ts b/kontor-angular/src/app/kontor/comic/artists/artists.service.ts similarity index 82% rename from kontor-angular/src/app/comic/artist/artist.service.ts rename to kontor-angular/src/app/kontor/comic/artists/artists.service.ts index 6852eba..e2ae1e6 100644 --- a/kontor-angular/src/app/comic/artist/artist.service.ts +++ b/kontor-angular/src/app/kontor/comic/artists/artists.service.ts @@ -1,21 +1,19 @@ -import { inject, Injectable, signal } from "@angular/core"; -import { ErrorService } from "../../shared/error.service"; import { HttpClient } from "@angular/common/http"; +import { inject, Injectable, signal } from "@angular/core"; import { Artist } from "./artist.model"; import { catchError, map, throwError } from "rxjs"; @Injectable({ - providedIn: 'root', + providedIn: 'root' }) -export class ArtistService { - private errorService = inject(ErrorService); +export class ArtistsService { private httpClient = inject(HttpClient); private artists = signal([]); loadedArtists = this.artists.asReadonly(); loadArtists() { - return this.fetchArtists('http://127.0.0.1:8800/api/comics/artists', 'Someting went wrong fetching artists. Please try again later-'); + return this.fetchArtists('http://127.0.0.1:8800/api/comics/artists', 'Someting went wrong fetching artists. Please try again later.'); } private fetchArtists(url: string, errorMessage: string) { diff --git a/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.css b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.css similarity index 100% rename from kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.css rename to kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.css diff --git a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.html b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.html new file mode 100644 index 0000000..c7fb516 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.html @@ -0,0 +1,5 @@ + diff --git a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.spec.ts new file mode 100644 index 0000000..faab5bb --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComicNavigationComponent } from './comic-navigation.component'; + +describe('ComicNavigationComponent', () => { + let component: ComicNavigationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ComicNavigationComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ComicNavigationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.ts b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.ts new file mode 100644 index 0000000..62dce29 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-comic-navigation', + imports: [RouterLink, RouterLinkActive], + templateUrl: './comic-navigation.component.html', + styleUrl: './comic-navigation.component.css' +}) +export class ComicNavigationComponent { + +} diff --git a/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.css b/kontor-angular/src/app/kontor/comic/comic-section.component.css similarity index 100% rename from kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.css rename to kontor-angular/src/app/kontor/comic/comic-section.component.css diff --git a/kontor-angular/src/app/kontor/comic/comic-section.component.html b/kontor-angular/src/app/kontor/comic/comic-section.component.html new file mode 100644 index 0000000..570e4d6 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-section.component.html @@ -0,0 +1,2 @@ + + diff --git a/kontor-angular/src/app/kontor/comic/comic-section.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-section.component.spec.ts new file mode 100644 index 0000000..0ce4d09 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-section.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComicSectionComponent } from './comic-section.component'; + +describe('ComicComponent', () => { + let component: ComicSectionComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ComicSectionComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ComicSectionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/comic/comic-section.component.ts b/kontor-angular/src/app/kontor/comic/comic-section.component.ts new file mode 100644 index 0000000..3ee6a6f --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-section.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; +import { ComicNavigationComponent } from "./comic-navigation/comic-navigation.component"; + +@Component({ + selector: 'app-comic-section', + imports: [RouterOutlet, ComicNavigationComponent], + templateUrl: './comic-section.component.html', + styleUrl: './comic-section.component.css' +}) +export class ComicSectionComponent { + +} diff --git a/kontor-angular/src/app/kontor/comic/comic.routes.ts b/kontor-angular/src/app/kontor/comic/comic.routes.ts new file mode 100644 index 0000000..389e589 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic.routes.ts @@ -0,0 +1,39 @@ +import { Routes } from "@angular/router"; +import { ArtistsComponent } from "./artists/artists.component"; +import { PublishersComponent } from "./publishers/publishers.component"; +import { ComicDetailsComponent } from "./comics/comic-details/comic-details.component"; +import { ComicSectionComponent } from "./comic-section.component"; +import { ComicsComponent } from "./comics/comics.component"; + +export const routes: Routes = [ + { + path: '', + component: ComicSectionComponent, + children: [ + { + path: 'comics', + component: ComicsComponent, + }, + { + path: 'comics/:comicId', + component: ComicDetailsComponent, + }, + { + path: 'artists', + component: ArtistsComponent, + }, + { + path: 'artists/:artistId', + component: ArtistsComponent, + }, + { + path: 'publishers', + component: PublishersComponent, + }, + { + path: 'publishers/:publisherId', + component: PublishersComponent, + }, + ], + }, +]; diff --git a/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.css b/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.css similarity index 100% rename from kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.css rename to kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.css diff --git a/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.html b/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.html new file mode 100644 index 0000000..e6f30bf --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.html @@ -0,0 +1,7 @@ +

comic-details works!

+
+ +
+
+

Comic Title

+
diff --git a/kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts b/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.spec.ts similarity index 52% rename from kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts rename to kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.spec.ts index 9034de6..5d7d15a 100644 --- a/kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { PositionListComponent } from './position-list.component'; +import { ComicDetailsComponent } from './comic-details.component'; -describe('PositionListComponent', () => { - let component: PositionListComponent; - let fixture: ComponentFixture; +describe('ComicDetailsComponent', () => { + let component: ComicDetailsComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [PositionListComponent] + imports: [ComicDetailsComponent] }) .compileComponents(); - fixture = TestBed.createComponent(PositionListComponent); + fixture = TestBed.createComponent(ComicDetailsComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.ts b/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.ts new file mode 100644 index 0000000..89e3909 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.ts @@ -0,0 +1,13 @@ +import { Component, input } from '@angular/core'; +import { ComicListComponent } from "../comic-list/comic-list.component"; +import { Comic } from '../comic.model'; + +@Component({ + selector: 'app-comic-details', + imports: [ComicListComponent], + templateUrl: './comic-details.component.html', + styleUrl: './comic-details.component.css' +}) +export class ComicDetailsComponent { + comic = input.required(); +} diff --git a/kontor-angular/src/app/media/media-overview/media-overview.component.css b/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.css similarity index 100% rename from kontor-angular/src/app/media/media-overview/media-overview.component.css rename to kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.css diff --git a/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.html b/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.html new file mode 100644 index 0000000..755e184 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.html @@ -0,0 +1,8 @@ +

comic-list works!

+
    + @for (comic of comics(); track comic.id) { +
  • + +
  • + } +
diff --git a/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.spec.ts b/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.spec.ts similarity index 100% rename from kontor-angular/src/app/comic/comic/comic-list/comic-list.component.spec.ts rename to kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.spec.ts diff --git a/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.ts b/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.ts new file mode 100644 index 0000000..2858e39 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.ts @@ -0,0 +1,38 @@ +import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; +import { Comic } from '../comic.model'; +import { ComicComponent } from "../comic/comic.component"; +import { ComicsService } from '../comics.service'; + +@Component({ + selector: 'app-comic-list', + imports: [ComicComponent], + templateUrl: './comic-list.component.html', + styleUrl: './comic-list.component.css' +}) +export class ComicListComponent implements OnInit { + comics = signal(undefined); + isFetching = signal(false); + error = signal(''); + private comicsService = inject(ComicsService); + private destroyRef = inject(DestroyRef); + + ngOnInit() { + this.isFetching.set(true); + const subscription = this.comicsService.loadComics().subscribe({ + next: (comics) => { + this.comics.set(comics); + }, + 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/kontor/comic/comics/comic.model.ts b/kontor-angular/src/app/kontor/comic/comics/comic.model.ts new file mode 100644 index 0000000..444d197 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comics/comic.model.ts @@ -0,0 +1,5 @@ +export interface Comic { + id: string; + title: string; + completed: boolean; +} diff --git a/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.css b/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.css similarity index 100% rename from kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.css rename to kontor-angular/src/app/kontor/comic/comics/comic/comic.component.css diff --git a/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.html b/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.html new file mode 100644 index 0000000..6113794 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.html @@ -0,0 +1,6 @@ +

comic works!

+ diff --git a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.spec.ts b/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.spec.ts similarity index 55% rename from kontor-angular/src/app/comic/comic-overview/comic-overview.component.spec.ts rename to kontor-angular/src/app/kontor/comic/comics/comic/comic.component.spec.ts index a61f624..7516987 100644 --- a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.spec.ts +++ b/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ComicOverview } from './comic-overview.component'; +import { ComicComponent } from './comic.component'; -describe('ComicOverview', () => { - let component: ComicOverview; - let fixture: ComponentFixture; +describe('ComicComponent', () => { + let component: ComicComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ComicOverview] + imports: [ComicComponent] }) .compileComponents(); - fixture = TestBed.createComponent(ComicOverview); + fixture = TestBed.createComponent(ComicComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.ts b/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.ts new file mode 100644 index 0000000..a45e42c --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.ts @@ -0,0 +1,13 @@ +import { Component, input } from '@angular/core'; +import { Comic } from '../comic.model'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-comic', + imports: [RouterLink, RouterLinkActive], + templateUrl: './comic.component.html', + styleUrl: './comic.component.css' +}) +export class ComicComponent { + comic = input.required(); +} diff --git a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.css b/kontor-angular/src/app/kontor/comic/comics/comics.component.css similarity index 100% rename from kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.css rename to kontor-angular/src/app/kontor/comic/comics/comics.component.css diff --git a/kontor-angular/src/app/kontor/comic/comics/comics.component.html b/kontor-angular/src/app/kontor/comic/comics/comics.component.html new file mode 100644 index 0000000..b29db66 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comics/comics.component.html @@ -0,0 +1,4 @@ +

comics works!

+
+ +
diff --git a/kontor-angular/src/app/kontor/comic/comics/comics.component.spec.ts b/kontor-angular/src/app/kontor/comic/comics/comics.component.spec.ts new file mode 100644 index 0000000..3b0af25 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comics/comics.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComicsComponent } from './comics.component'; + +describe('ComicsComponent', () => { + let component: ComicsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ComicsComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ComicsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/comic/comics/comics.component.ts b/kontor-angular/src/app/kontor/comic/comics/comics.component.ts new file mode 100644 index 0000000..742b179 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comics/comics.component.ts @@ -0,0 +1,12 @@ +import { Component, signal } from '@angular/core'; +import { ComicListComponent } from "./comic-list/comic-list.component"; +import { ComicDetailsComponent } from './comic-details/comic-details.component'; + +@Component({ + selector: 'app-comics', + imports: [ComicListComponent], + templateUrl: './comics.component.html', + styleUrl: './comics.component.css' +}) +export class ComicsComponent { +} diff --git a/kontor-angular/src/app/kontor/comic/comics/comics.service.ts b/kontor-angular/src/app/kontor/comic/comics/comics.service.ts new file mode 100644 index 0000000..b747385 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comics/comics.service.ts @@ -0,0 +1,29 @@ +import { HttpClient } from "@angular/common/http"; +import { inject, Injectable, signal } from "@angular/core"; +import { Comic } from "./comic.model"; +import { catchError, map, throwError } from "rxjs"; + +@Injectable({ + providedIn: 'root' +}) +export class ComicsService { + private httpClient = inject(HttpClient); + private comics = signal([]); + + loadedComics = this.comics.asReadonly(); + + loadComics() { + return this.fetchComics('http://127.0.0.1:8800/api/comics/comics', 'Someting went wrong fetching comics. Please try again later.'); + } + + private fetchComics(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/player/player-list/player-list.component.css b/kontor-angular/src/app/kontor/comic/publishers/publishers.component.css similarity index 100% rename from kontor-angular/src/app/tysc/player/player-list/player-list.component.css rename to kontor-angular/src/app/kontor/comic/publishers/publishers.component.css diff --git a/kontor-angular/src/app/kontor/comic/publishers/publishers.component.html b/kontor-angular/src/app/kontor/comic/publishers/publishers.component.html new file mode 100644 index 0000000..2268b57 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/publishers/publishers.component.html @@ -0,0 +1 @@ +

publishers works!

diff --git a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts b/kontor-angular/src/app/kontor/comic/publishers/publishers.component.spec.ts similarity index 53% rename from kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts rename to kontor-angular/src/app/kontor/comic/publishers/publishers.component.spec.ts index 7a1c646..91bfdee 100644 --- a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/comic/publishers/publishers.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { SportListComponent } from './sport-list.component'; +import { PublishersComponent } from './publishers.component'; -describe('SportListComponent', () => { - let component: SportListComponent; - let fixture: ComponentFixture; +describe('PublishersComponent', () => { + let component: PublishersComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [SportListComponent] + imports: [PublishersComponent] }) .compileComponents(); - fixture = TestBed.createComponent(SportListComponent); + fixture = TestBed.createComponent(PublishersComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/comic/publishers/publishers.component.ts b/kontor-angular/src/app/kontor/comic/publishers/publishers.component.ts new file mode 100644 index 0000000..a7711a7 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/publishers/publishers.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-publishers', + imports: [], + templateUrl: './publishers.component.html', + styleUrl: './publishers.component.css' +}) +export class PublishersComponent { + +} diff --git a/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.css b/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.css new file mode 100644 index 0000000..5bec969 --- /dev/null +++ b/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.css @@ -0,0 +1,9 @@ +footer { + padding: 30px; + text-align: center; + background-color: lightblue; +} + +footer div { + font-size: 20px; +} diff --git a/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.html b/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.html new file mode 100644 index 0000000..0cb97f4 --- /dev/null +++ b/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.html @@ -0,0 +1,3 @@ +
+
Kontor Footer
+
diff --git a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.spec.ts b/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.spec.ts similarity index 52% rename from kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.spec.ts rename to kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.spec.ts index cf1fa88..a957c42 100644 --- a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.spec.ts +++ b/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ArtistDetailComponent } from './artist-detail.component'; +import { KontorFooterComponent } from './kontor-footer.component'; -describe('ArtistDetailComponent', () => { - let component: ArtistDetailComponent; - let fixture: ComponentFixture; +describe('KontorFooterComponent', () => { + let component: KontorFooterComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ArtistDetailComponent] + imports: [KontorFooterComponent] }) .compileComponents(); - fixture = TestBed.createComponent(ArtistDetailComponent); + fixture = TestBed.createComponent(KontorFooterComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.ts b/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.ts new file mode 100644 index 0000000..9c80368 --- /dev/null +++ b/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-kontor-footer', + imports: [], + templateUrl: './kontor-footer.component.html', + styleUrl: './kontor-footer.component.css' +}) +export class KontorFooterComponent { + +} diff --git a/kontor-angular/src/app/kontor/header/header.component.html b/kontor-angular/src/app/kontor/header/header.component.html index 9c1f7a2..3191f24 100644 --- a/kontor-angular/src/app/kontor/header/header.component.html +++ b/kontor-angular/src/app/kontor/header/header.component.html @@ -2,18 +2,4 @@

{{ title() }}

- - diff --git a/kontor-angular/src/app/kontor/header/header.component.ts b/kontor-angular/src/app/kontor/header/header.component.ts index 8808cc8..269b9f0 100644 --- a/kontor-angular/src/app/kontor/header/header.component.ts +++ b/kontor-angular/src/app/kontor/header/header.component.ts @@ -3,7 +3,7 @@ import { RouterLink, RouterLinkActive } from '@angular/router'; @Component({ selector: 'kontor-header', - imports: [RouterLink, RouterLinkActive], + imports: [], templateUrl: './header.component.html', styleUrl: './header.component.css' }) diff --git a/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.css b/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.css new file mode 100644 index 0000000..e8a1a80 --- /dev/null +++ b/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.css @@ -0,0 +1,9 @@ +.header { + padding: 30px; + text-align: center; + background-color: lightblue; +} + +.header h1 { + font-size: 50px; +} diff --git a/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.html b/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.html new file mode 100644 index 0000000..3191f24 --- /dev/null +++ b/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.html @@ -0,0 +1,5 @@ +
+
+

{{ title() }}

+
+
diff --git a/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.spec.ts b/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.spec.ts new file mode 100644 index 0000000..2e4ac4b --- /dev/null +++ b/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { KontorHeaderComponent } from './kontor-header.component'; + +describe('KontorHeaderComponent', () => { + let component: KontorHeaderComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [KontorHeaderComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(KontorHeaderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.ts b/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.ts new file mode 100644 index 0000000..703d87a --- /dev/null +++ b/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.ts @@ -0,0 +1,11 @@ +import { Component, signal } from '@angular/core'; + +@Component({ + selector: 'app-kontor-header', + imports: [], + templateUrl: './kontor-header.component.html', + styleUrl: './kontor-header.component.css' +}) +export class KontorHeaderComponent { + protected readonly title = signal('Kontor'); +} diff --git a/kontor-angular/src/app/tysc/position/position-list/position-list.component.css b/kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.css similarity index 100% rename from kontor-angular/src/app/tysc/position/position-list/position-list.component.css rename to kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.css diff --git a/kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.html b/kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.html new file mode 100644 index 0000000..2caacf9 --- /dev/null +++ b/kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.html @@ -0,0 +1 @@ +

kontor-home works!

diff --git a/kontor-angular/src/app/tysc/player/player-list/player-list.component.spec.ts b/kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.spec.ts similarity index 52% rename from kontor-angular/src/app/tysc/player/player-list/player-list.component.spec.ts rename to kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.spec.ts index 0d08ee9..a38facd 100644 --- a/kontor-angular/src/app/tysc/player/player-list/player-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { PlayerListComponent } from './player-list.component'; +import { KontorHomeComponent } from './kontor-home.component'; -describe('PlayerListComponent', () => { - let component: PlayerListComponent; - let fixture: ComponentFixture; +describe('KontorHomeComponent', () => { + let component: KontorHomeComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [PlayerListComponent] + imports: [KontorHomeComponent] }) .compileComponents(); - fixture = TestBed.createComponent(PlayerListComponent); + fixture = TestBed.createComponent(KontorHomeComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.ts b/kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.ts new file mode 100644 index 0000000..d0e3990 --- /dev/null +++ b/kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-kontor-home', + imports: [], + templateUrl: './kontor-home.component.html', + styleUrl: './kontor-home.component.css' +}) +export class KontorHomeComponent { + +} diff --git a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.css b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.css similarity index 100% rename from kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.css rename to kontor-angular/src/app/kontor/media/media-actors/media-actors.component.css diff --git a/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.html b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.html new file mode 100644 index 0000000..3904b79 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.html @@ -0,0 +1 @@ +

media-actors works!

diff --git a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.spec.ts similarity index 52% rename from kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts rename to kontor-angular/src/app/kontor/media/media-actors/media-actors.component.spec.ts index c957e68..1448ea4 100644 --- a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { CardsetListComponent } from './cardset-list.component'; +import { MediaActorsComponent } from './media-actors.component'; -describe('CardsetListComponent', () => { - let component: CardsetListComponent; - let fixture: ComponentFixture; +describe('MediaActorsComponent', () => { + let component: MediaActorsComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [CardsetListComponent] + imports: [MediaActorsComponent] }) .compileComponents(); - fixture = TestBed.createComponent(CardsetListComponent); + fixture = TestBed.createComponent(MediaActorsComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.ts b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.ts new file mode 100644 index 0000000..8fbb7f8 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-media-actors', + imports: [], + templateUrl: './media-actors.component.html', + styleUrl: './media-actors.component.css' +}) +export class MediaActorsComponent { + +} diff --git a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.css b/kontor-angular/src/app/kontor/media/media-files/media-files.component.css similarity index 100% rename from kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.css rename to kontor-angular/src/app/kontor/media/media-files/media-files.component.css diff --git a/kontor-angular/src/app/kontor/media/media-files/media-files.component.html b/kontor-angular/src/app/kontor/media/media-files/media-files.component.html new file mode 100644 index 0000000..367cd62 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-files/media-files.component.html @@ -0,0 +1 @@ +

media-files works!

diff --git a/kontor-angular/src/app/kontor/media/media-files/media-files.component.spec.ts b/kontor-angular/src/app/kontor/media/media-files/media-files.component.spec.ts new file mode 100644 index 0000000..c8f1c9f --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-files/media-files.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MediaFilesComponent } from './media-files.component'; + +describe('MediaFilesComponent', () => { + let component: MediaFilesComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MediaFilesComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MediaFilesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts b/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts new file mode 100644 index 0000000..58d983c --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-media-files', + imports: [], + templateUrl: './media-files.component.html', + styleUrl: './media-files.component.css' +}) +export class MediaFilesComponent { + +} diff --git a/kontor-angular/src/app/tysc/team/team-list/team-list.component.css b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.css similarity index 100% rename from kontor-angular/src/app/tysc/team/team-list/team-list.component.css rename to kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.css diff --git a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html new file mode 100644 index 0000000..cd3857f --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html @@ -0,0 +1,5 @@ + diff --git a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.spec.ts b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.spec.ts new file mode 100644 index 0000000..e1c7fdf --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MediaNavigationComponent } from './media-navigation.component'; + +describe('MediaNavigationComponent', () => { + let component: MediaNavigationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MediaNavigationComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MediaNavigationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.ts b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.ts new file mode 100644 index 0000000..673afd9 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-media-navigation', + imports: [RouterLink, RouterLinkActive], + templateUrl: './media-navigation.component.html', + styleUrl: './media-navigation.component.css' +}) +export class MediaNavigationComponent { + +} diff --git a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.css b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.css similarity index 100% rename from kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.css rename to kontor-angular/src/app/kontor/media/media-videos/media-videos.component.css diff --git a/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.html b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.html new file mode 100644 index 0000000..2aaafcb --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.html @@ -0,0 +1 @@ +

media-videos works!

diff --git a/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.spec.ts b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.spec.ts new file mode 100644 index 0000000..ccde24c --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MediaVideosComponent } from './media-videos.component'; + +describe('MediaVideosComponent', () => { + let component: MediaVideosComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MediaVideosComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MediaVideosComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.ts b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.ts new file mode 100644 index 0000000..5b1f52e --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-media-videos', + imports: [], + templateUrl: './media-videos.component.html', + styleUrl: './media-videos.component.css' +}) +export class MediaVideosComponent { + +} diff --git a/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.css b/kontor-angular/src/app/kontor/media/media.component.css similarity index 100% rename from kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.css rename to kontor-angular/src/app/kontor/media/media.component.css diff --git a/kontor-angular/src/app/kontor/media/media.component.html b/kontor-angular/src/app/kontor/media/media.component.html new file mode 100644 index 0000000..935917e --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media.component.html @@ -0,0 +1,2 @@ + + diff --git a/kontor-angular/src/app/kontor/media/media.component.spec.ts b/kontor-angular/src/app/kontor/media/media.component.spec.ts new file mode 100644 index 0000000..366f292 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MediaComponent } from './media.component'; + +describe('MediaComponent', () => { + let component: MediaComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MediaComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MediaComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/media/media.component.ts b/kontor-angular/src/app/kontor/media/media.component.ts new file mode 100644 index 0000000..6dc8018 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { MediaNavigationComponent } from "./media-navigation/media-navigation.component"; +import { RouterOutlet } from '@angular/router'; + +@Component({ + selector: 'app-media', + imports: [MediaNavigationComponent, RouterOutlet], + templateUrl: './media.component.html', + styleUrl: './media.component.css' +}) +export class MediaComponent { + +} diff --git a/kontor-angular/src/app/kontor/media/media.routes.ts b/kontor-angular/src/app/kontor/media/media.routes.ts new file mode 100644 index 0000000..556e9cd --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media.routes.ts @@ -0,0 +1,26 @@ +import { Routes } from "@angular/router"; +import { MediaComponent } from "./media.component"; +import { MediaFilesComponent } from "./media-files/media-files.component"; +import { MediaActorsComponent } from "./media-actors/media-actors.component"; +import { MediaVideosComponent } from "./media-videos/media-videos.component"; + +export const routes: Routes = [ + { + path: '', + component: MediaComponent, + children: [ + { + path: 'mediafiles', + component: MediaFilesComponent, + }, + { + path: 'mediaactors', + component: MediaActorsComponent, + }, + { + path: 'mediavideos', + component: MediaVideosComponent, + }, + ], + }, +]; diff --git a/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.css b/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.css new file mode 100644 index 0000000..d90b8e6 --- /dev/null +++ b/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.css @@ -0,0 +1 @@ +/* Style the top navigation bar */ diff --git a/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.html b/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.html new file mode 100644 index 0000000..bd3d6a0 --- /dev/null +++ b/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.html @@ -0,0 +1,6 @@ + diff --git a/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.spec.ts b/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.spec.ts new file mode 100644 index 0000000..1575b00 --- /dev/null +++ b/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { KontorNavigationComponent } from './kontor-navigation.component'; + +describe('KontorNavigationComponent', () => { + let component: KontorNavigationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [KontorNavigationComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(KontorNavigationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.ts b/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.ts new file mode 100644 index 0000000..d571a25 --- /dev/null +++ b/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-kontor-navigation', + imports: [RouterLink, RouterLinkActive], + templateUrl: './kontor-navigation.component.html', + styleUrl: './kontor-navigation.component.css' +}) +export class KontorNavigationComponent { + +} diff --git a/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.css b/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.html b/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.html new file mode 100644 index 0000000..59cab54 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.html @@ -0,0 +1 @@ +

cardsets works!

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

players works!

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

positions works!

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

sports works!

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

teams works!

diff --git a/kontor-angular/src/app/kontor/tysc/teams/teams.component.spec.ts b/kontor-angular/src/app/kontor/tysc/teams/teams.component.spec.ts new file mode 100644 index 0000000..224a144 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/teams/teams.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TeamsComponent } from './teams.component'; + +describe('TeamsComponent', () => { + let component: TeamsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [TeamsComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(TeamsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/tysc/teams/teams.component.ts b/kontor-angular/src/app/kontor/tysc/teams/teams.component.ts new file mode 100644 index 0000000..922c64c --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/teams/teams.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-teams', + imports: [], + templateUrl: './teams.component.html', + styleUrl: './teams.component.css' +}) +export class TeamsComponent { + +} diff --git a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.css b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.html b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.html new file mode 100644 index 0000000..67b5fb9 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.html @@ -0,0 +1,7 @@ + diff --git a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.spec.ts new file mode 100644 index 0000000..363a185 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TyscNavigationComponent } from './tysc-navigation.component'; + +describe('TyscNavigationComponent', () => { + let component: TyscNavigationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [TyscNavigationComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(TyscNavigationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.ts new file mode 100644 index 0000000..0a8cc16 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-tysc-navigation', + imports: [RouterLink, RouterLinkActive], + templateUrl: './tysc-navigation.component.html', + styleUrl: './tysc-navigation.component.css' +}) +export class TyscNavigationComponent { + +} diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section.component.css b/kontor-angular/src/app/kontor/tysc/tysc-section.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section.component.html b/kontor-angular/src/app/kontor/tysc/tysc-section.component.html new file mode 100644 index 0000000..6e5aeb1 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-section.component.html @@ -0,0 +1,2 @@ + + diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-section.component.spec.ts new file mode 100644 index 0000000..c8c34ec --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-section.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TyscSectionComponent } from './tysc-section.component'; + +describe('TyscSectionComponent', () => { + let component: TyscSectionComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [TyscSectionComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(TyscSectionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-section.component.ts new file mode 100644 index 0000000..9c05e01 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-section.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; +import { TyscNavigationComponent } from './tysc-navigation/tysc-navigation.component'; + +@Component({ + selector: 'app-tysc-section', + imports: [RouterOutlet, TyscNavigationComponent], + templateUrl: './tysc-section.component.html', + styleUrl: './tysc-section.component.css' +}) +export class TyscSectionComponent { + +} diff --git a/kontor-angular/src/app/kontor/tysc/tysc.routes.ts b/kontor-angular/src/app/kontor/tysc/tysc.routes.ts new file mode 100644 index 0000000..bec1dae --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc.routes.ts @@ -0,0 +1,36 @@ +import { Routes } from "@angular/router"; +import { TyscSectionComponent } from "./tysc-section.component"; +import { TeamsComponent } from "./teams/teams.component"; +import { PositionsComponent } from "./positions/positions.component"; +import { PlayersComponent } from "./players/players.component"; +import { CardsetsComponent } from "./cardsets/cardsets.component"; +import { VendorsComponent } from "./vendors/vendors.component"; + +export const routes: Routes = [ + { + path: '', + component: TyscSectionComponent, + children: [ + { + path: 'teams', + component: TeamsComponent, + }, + { + path: 'positions', + component: PositionsComponent, + }, + { + path: 'players', + component: PlayersComponent, + }, + { + path: 'cardsets', + component: CardsetsComponent, + }, + { + path: 'vendors', + component: VendorsComponent, + }, + ], + }, +]; diff --git a/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.css b/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.html b/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.html new file mode 100644 index 0000000..a4fc884 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.html @@ -0,0 +1 @@ +

vendors works!

diff --git a/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.spec.ts b/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.spec.ts new file mode 100644 index 0000000..48ed75f --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { VendorsComponent } from './vendors.component'; + +describe('VendorsComponent', () => { + let component: VendorsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [VendorsComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(VendorsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.ts b/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.ts new file mode 100644 index 0000000..edacb9b --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-vendors', + imports: [], + templateUrl: './vendors.component.html', + styleUrl: './vendors.component.css' +}) +export class VendorsComponent { + +} 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 deleted file mode 100644 index 43702b0..0000000 --- a/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

media-actor-list works!

diff --git a/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts b/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts deleted file mode 100644 index 1eae192..0000000 --- a/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { MediaActorListComponent } from './media-actor-list.component'; - -describe('MediaActorListComponent', () => { - let component: MediaActorListComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [MediaActorListComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(MediaActorListComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); 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 deleted file mode 100644 index f765de4..0000000 --- a/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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-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 deleted file mode 100644 index 0c46e27..0000000 --- a/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

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 deleted file mode 100644 index 331bea0..0000000 --- a/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -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 deleted file mode 100644 index f64918a..0000000 --- a/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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-overview/media-overview.component.html b/kontor-angular/src/app/media/media-overview/media-overview.component.html deleted file mode 100644 index 4a72d42..0000000 --- a/kontor-angular/src/app/media/media-overview/media-overview.component.html +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/kontor-angular/src/app/media/media-overview/media-overview.component.spec.ts b/kontor-angular/src/app/media/media-overview/media-overview.component.spec.ts deleted file mode 100644 index ccaf8b5..0000000 --- a/kontor-angular/src/app/media/media-overview/media-overview.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { MediaOverviewComponent } from './media-overview.component'; - -describe('MediaOverview', () => { - let component: MediaOverviewComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [MediaOverviewComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(MediaOverviewComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); 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 deleted file mode 100644 index ea7711b..0000000 --- a/kontor-angular/src/app/media/media-overview/media-overview.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component } from '@angular/core'; -import { RouterLink, RouterOutlet, RouterLinkActive } from '@angular/router'; - -@Component({ - selector: 'kontor-media-overview', - imports: [RouterOutlet, RouterLink, RouterLinkActive], - templateUrl: './media-overview.component.html', - styleUrl: './media-overview.component.css' -}) -export class MediaOverviewComponent { - -} 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 deleted file mode 100644 index ae42ba1..0000000 --- a/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

media-video-list works!

diff --git a/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts b/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts deleted file mode 100644 index e18eb84..0000000 --- a/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { MediaVideoListComponent } from './media-video-list.component'; - -describe('MediaVideoListComponent', () => { - let component: MediaVideoListComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [MediaVideoListComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(MediaVideoListComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); 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 deleted file mode 100644 index bae8344..0000000 --- a/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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/tysc/cardset/cardset-list/cardset-list.component.html b/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.html deleted file mode 100644 index 45f5e7b..0000000 --- a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

cardset-list works!

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 deleted file mode 100644 index 67d92e0..0000000 --- a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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.html b/kontor-angular/src/app/tysc/player/player-list/player-list.component.html deleted file mode 100644 index 66a8ec9..0000000 --- a/kontor-angular/src/app/tysc/player/player-list/player-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

player-list works!

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 deleted file mode 100644 index 72646c0..0000000 --- a/kontor-angular/src/app/tysc/player/player-list/player-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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.html b/kontor-angular/src/app/tysc/position/position-list/position-list.component.html deleted file mode 100644 index 652033e..0000000 --- a/kontor-angular/src/app/tysc/position/position-list/position-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

position-list works!

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 deleted file mode 100644 index f76b808..0000000 --- a/kontor-angular/src/app/tysc/position/position-list/position-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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.html b/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.html deleted file mode 100644 index 36f5c85..0000000 --- a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.html +++ /dev/null @@ -1,8 +0,0 @@ -

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.ts b/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.ts deleted file mode 100644 index a22dd75..0000000 --- a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.ts +++ /dev/null @@ -1,38 +0,0 @@ -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.html b/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.html deleted file mode 100644 index 8339199..0000000 --- a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.html +++ /dev/null @@ -1 +0,0 @@ -

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 deleted file mode 100644 index 1bc65be..0000000 --- a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -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 deleted file mode 100644 index 896f350..0000000 --- a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index a9bc9a2..0000000 --- a/kontor-angular/src/app/tysc/sport/sport.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index 31945dd..0000000 --- a/kontor-angular/src/app/tysc/sport/sport.service.ts +++ /dev/null @@ -1,30 +0,0 @@ -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.html b/kontor-angular/src/app/tysc/team/team-list/team-list.component.html deleted file mode 100644 index 5f0a00a..0000000 --- a/kontor-angular/src/app/tysc/team/team-list/team-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

team-list works!

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 deleted file mode 100644 index f3b7766..0000000 --- a/kontor-angular/src/app/tysc/team/team-list/team-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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.html b/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.html deleted file mode 100644 index 7f5e8d2..0000000 --- a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.html +++ /dev/null @@ -1,8 +0,0 @@ - - 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 deleted file mode 100644 index 12710f8..0000000 --- a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -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.html b/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.html deleted file mode 100644 index aedf60d..0000000 --- a/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

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 deleted file mode 100644 index fc3ed2c..0000000 --- a/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -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 deleted file mode 100644 index 073a098..0000000 --- a/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-vendor-list', - imports: [], - templateUrl: './vendor-list.component.html', - styleUrl: './vendor-list.component.css' -}) -export class VendorListComponent { - -} -- 2.18.0 From fcfe9a2c08210f291a68e2a5ad2111351a72211a Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Thu, 18 Sep 2025 22:13:39 +0200 Subject: [PATCH 02/20] Revert "move Kontor related components to subfolder kontor" This reverts commit 9ee1a04a5c132c47eb169d68682146106e5c1558. --- kontor-angular/angular.json | 1 + kontor-angular/src/app/app.component.html | 1 - kontor-angular/src/app/app.component.ts | 3 +- kontor-angular/src/app/app.config.ts | 5 +- kontor-angular/src/app/app.routes.ts | 59 +++++++++++++------ .../artist-detail/artist-detail.component.css | 5 ++ .../artist-detail.component.html | 5 ++ .../artist-detail.component.spec.ts} | 12 ++-- .../artist-detail/artist-detail.component.ts | 14 +++++ .../artist-list/artist-list.component.css | 0 .../artist-list/artist-list.component.html | 2 +- .../artist-list/artist-list.component.spec.ts | 0 .../artist-list/artist-list.component.ts | 15 ++--- .../artists => comic/artist}/artist.model.ts | 0 .../artist/artist.service.ts} | 10 ++-- .../comic-overview.component.css} | 0 .../comic-overview.component.html | 16 +++++ .../comic-overview.component.spec.ts} | 12 ++-- .../comic-overview.component.ts | 12 ++++ .../comic-list/comic-list.component.css | 0 .../comic-list/comic-list.component.html | 1 + .../comic-list/comic-list.component.spec.ts | 0 .../comic/comic-list/comic-list.component.ts | 11 ++++ .../publisher-list.component.css} | 0 .../publisher-list.component.html | 1 + .../publisher-list.component.spec.ts | 23 ++++++++ .../publisher-list.component.ts | 11 ++++ .../artists/artist/artist.component.html | 5 -- .../comic/artists/artist/artist.component.ts | 13 ---- .../comic/artists/artists.component.html | 7 --- .../kontor/comic/artists/artists.component.ts | 12 ---- .../comic-navigation.component.html | 5 -- .../comic-navigation.component.spec.ts | 23 -------- .../comic-navigation.component.ts | 12 ---- .../kontor/comic/comic-section.component.html | 2 - .../kontor/comic/comic-section.component.ts | 13 ---- .../src/app/kontor/comic/comic.routes.ts | 39 ------------ .../comic-details.component.html | 7 --- .../comic-details/comic-details.component.ts | 13 ---- .../comic-list/comic-list.component.html | 8 --- .../comics/comic-list/comic-list.component.ts | 38 ------------ .../app/kontor/comic/comics/comic.model.ts | 5 -- .../comic/comics/comic/comic.component.html | 6 -- .../comic/comics/comic/comic.component.ts | 13 ---- .../kontor/comic/comics/comics.component.html | 4 -- .../comic/comics/comics.component.spec.ts | 23 -------- .../kontor/comic/comics/comics.component.ts | 12 ---- .../app/kontor/comic/comics/comics.service.ts | 29 --------- .../publishers/publishers.component.html | 1 - .../publishers/publishers.component.spec.ts | 23 -------- .../comic/publishers/publishers.component.ts | 11 ---- .../kontor-footer/kontor-footer.component.css | 9 --- .../kontor-footer.component.html | 3 - .../kontor-footer/kontor-footer.component.ts | 11 ---- .../app/kontor/header/header.component.html | 14 +++++ .../src/app/kontor/header/header.component.ts | 2 +- .../kontor-header/kontor-header.component.css | 9 --- .../kontor-header.component.html | 5 -- .../kontor-header.component.spec.ts | 23 -------- .../kontor-header/kontor-header.component.ts | 11 ---- .../kontor-home/kontor-home.component.html | 1 - .../kontor-home/kontor-home.component.spec.ts | 23 -------- .../home/kontor-home/kontor-home.component.ts | 11 ---- .../media-actors/media-actors.component.html | 1 - .../media-actors/media-actors.component.ts | 11 ---- .../media-files/media-files.component.html | 1 - .../media-files/media-files.component.spec.ts | 23 -------- .../media-files/media-files.component.ts | 11 ---- .../media-navigation.component.html | 5 -- .../media-navigation.component.spec.ts | 23 -------- .../media-navigation.component.ts | 12 ---- .../media-videos/media-videos.component.html | 1 - .../media-videos.component.spec.ts | 23 -------- .../media-videos/media-videos.component.ts | 11 ---- .../src/app/kontor/media/media.component.html | 2 - .../app/kontor/media/media.component.spec.ts | 23 -------- .../src/app/kontor/media/media.component.ts | 13 ---- .../src/app/kontor/media/media.routes.ts | 26 -------- .../kontor-navigation.component.css | 1 - .../kontor-navigation.component.html | 6 -- .../kontor-navigation.component.spec.ts | 23 -------- .../kontor-navigation.component.ts | 12 ---- .../tysc/cardsets/cardsets.component.css | 0 .../tysc/cardsets/cardsets.component.html | 1 - .../tysc/cardsets/cardsets.component.spec.ts | 23 -------- .../tysc/cardsets/cardsets.component.ts | 11 ---- .../kontor/tysc/players/players.component.css | 0 .../tysc/players/players.component.html | 1 - .../tysc/players/players.component.spec.ts | 23 -------- .../kontor/tysc/players/players.component.ts | 11 ---- .../tysc/positions/positions.component.css | 0 .../tysc/positions/positions.component.html | 1 - .../positions/positions.component.spec.ts | 23 -------- .../tysc/positions/positions.component.ts | 11 ---- .../kontor/tysc/sports/sports.component.css | 0 .../kontor/tysc/sports/sports.component.html | 1 - .../tysc/sports/sports.component.spec.ts | 23 -------- .../kontor/tysc/sports/sports.component.ts | 11 ---- .../app/kontor/tysc/teams/teams.component.css | 0 .../kontor/tysc/teams/teams.component.html | 1 - .../app/kontor/tysc/teams/teams.component.ts | 11 ---- .../tysc-navigation.component.css | 0 .../tysc-navigation.component.html | 7 --- .../tysc-navigation.component.spec.ts | 23 -------- .../tysc-navigation.component.ts | 12 ---- .../kontor/tysc/tysc-section.component.css | 0 .../kontor/tysc/tysc-section.component.html | 2 - .../tysc/tysc-section.component.spec.ts | 23 -------- .../app/kontor/tysc/tysc-section.component.ts | 13 ---- .../src/app/kontor/tysc/tysc.routes.ts | 36 ----------- .../kontor/tysc/vendors/vendors.component.css | 0 .../tysc/vendors/vendors.component.html | 1 - .../tysc/vendors/vendors.component.spec.ts | 23 -------- .../kontor/tysc/vendors/vendors.component.ts | 11 ---- .../media-actor-list.component.css} | 0 .../media-actor-list.component.html | 1 + .../media-actor-list.component.spec.ts | 23 ++++++++ .../media-actor-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-overview.component.css} | 0 .../media-overview.component.html | 16 +++++ .../media-overview.component.spec.ts} | 12 ++-- .../media-overview.component.ts | 12 ++++ .../media-video-list.component.css} | 0 .../media-video-list.component.html | 1 + .../media-video-list.component.spec.ts | 23 ++++++++ .../media-video-list.component.ts | 11 ++++ .../cardset-list/cardset-list.component.css} | 0 .../cardset-list/cardset-list.component.html | 1 + .../cardset-list.component.spec.ts} | 12 ++-- .../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.component.css} | 0 .../position-list.component.html | 1 + .../position-list.component.spec.ts} | 12 ++-- .../position-list/position-list.component.ts | 11 ++++ .../sport-list/sport-list.component.css} | 0 .../sport-list/sport-list.component.html | 8 +++ .../sport-list/sport-list.component.spec.ts} | 12 ++-- .../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-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 ++++ 164 files changed, 597 insertions(+), 1045 deletions(-) create mode 100644 kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.css create mode 100644 kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.html rename kontor-angular/src/app/{kontor/comic/comics/comic-details/comic-details.component.spec.ts => comic/artist/artist-detail/artist-detail.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.ts rename kontor-angular/src/app/{kontor/comic/artists => comic/artist}/artist-list/artist-list.component.css (100%) rename kontor-angular/src/app/{kontor/comic/artists => comic/artist}/artist-list/artist-list.component.html (64%) rename kontor-angular/src/app/{kontor/comic/artists => comic/artist}/artist-list/artist-list.component.spec.ts (100%) rename kontor-angular/src/app/{kontor/comic/artists => comic/artist}/artist-list/artist-list.component.ts (72%) rename kontor-angular/src/app/{kontor/comic/artists => comic/artist}/artist.model.ts (100%) rename kontor-angular/src/app/{kontor/comic/artists/artists.service.ts => comic/artist/artist.service.ts} (82%) rename kontor-angular/src/app/{kontor/comic/artists/artist/artist.component.css => comic/comic-overview/comic-overview.component.css} (100%) create mode 100644 kontor-angular/src/app/comic/comic-overview/comic-overview.component.html rename kontor-angular/src/app/{kontor/tysc/teams/teams.component.spec.ts => comic/comic-overview/comic-overview.component.spec.ts} (55%) create mode 100644 kontor-angular/src/app/comic/comic-overview/comic-overview.component.ts rename kontor-angular/src/app/{kontor/comic/comics => comic/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/{kontor/comic/comics => comic/comic}/comic-list/comic-list.component.spec.ts (100%) create mode 100644 kontor-angular/src/app/comic/comic/comic-list/comic-list.component.ts rename kontor-angular/src/app/{kontor/comic/artists/artists.component.css => 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 create mode 100644 kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.ts delete mode 100644 kontor-angular/src/app/kontor/comic/artists/artist/artist.component.html delete mode 100644 kontor-angular/src/app/kontor/comic/artists/artist/artist.component.ts delete mode 100644 kontor-angular/src/app/kontor/comic/artists/artists.component.html delete mode 100644 kontor-angular/src/app/kontor/comic/artists/artists.component.ts delete mode 100644 kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.html delete mode 100644 kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.ts delete mode 100644 kontor-angular/src/app/kontor/comic/comic-section.component.html delete mode 100644 kontor-angular/src/app/kontor/comic/comic-section.component.ts delete mode 100644 kontor-angular/src/app/kontor/comic/comic.routes.ts delete mode 100644 kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.html delete mode 100644 kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.ts delete mode 100644 kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.html delete mode 100644 kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.ts delete mode 100644 kontor-angular/src/app/kontor/comic/comics/comic.model.ts delete mode 100644 kontor-angular/src/app/kontor/comic/comics/comic/comic.component.html delete mode 100644 kontor-angular/src/app/kontor/comic/comics/comic/comic.component.ts delete mode 100644 kontor-angular/src/app/kontor/comic/comics/comics.component.html delete mode 100644 kontor-angular/src/app/kontor/comic/comics/comics.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/comic/comics/comics.component.ts delete mode 100644 kontor-angular/src/app/kontor/comic/comics/comics.service.ts delete mode 100644 kontor-angular/src/app/kontor/comic/publishers/publishers.component.html delete mode 100644 kontor-angular/src/app/kontor/comic/publishers/publishers.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/comic/publishers/publishers.component.ts delete mode 100644 kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.css delete mode 100644 kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.html delete mode 100644 kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.ts delete mode 100644 kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.css delete mode 100644 kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.html delete mode 100644 kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.ts delete mode 100644 kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.html delete mode 100644 kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.ts delete mode 100644 kontor-angular/src/app/kontor/media/media-actors/media-actors.component.html delete mode 100644 kontor-angular/src/app/kontor/media/media-actors/media-actors.component.ts delete mode 100644 kontor-angular/src/app/kontor/media/media-files/media-files.component.html delete mode 100644 kontor-angular/src/app/kontor/media/media-files/media-files.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/media/media-files/media-files.component.ts delete mode 100644 kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html delete mode 100644 kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.ts delete mode 100644 kontor-angular/src/app/kontor/media/media-videos/media-videos.component.html delete mode 100644 kontor-angular/src/app/kontor/media/media-videos/media-videos.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/media/media-videos/media-videos.component.ts delete mode 100644 kontor-angular/src/app/kontor/media/media.component.html delete mode 100644 kontor-angular/src/app/kontor/media/media.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/media/media.component.ts delete mode 100644 kontor-angular/src/app/kontor/media/media.routes.ts delete mode 100644 kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.css delete mode 100644 kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.html delete mode 100644 kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.css delete mode 100644 kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.html delete mode 100644 kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/players/players.component.css delete mode 100644 kontor-angular/src/app/kontor/tysc/players/players.component.html delete mode 100644 kontor-angular/src/app/kontor/tysc/players/players.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/players/players.component.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/positions/positions.component.css delete mode 100644 kontor-angular/src/app/kontor/tysc/positions/positions.component.html delete mode 100644 kontor-angular/src/app/kontor/tysc/positions/positions.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/positions/positions.component.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/sports/sports.component.css delete mode 100644 kontor-angular/src/app/kontor/tysc/sports/sports.component.html delete mode 100644 kontor-angular/src/app/kontor/tysc/sports/sports.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/sports/sports.component.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/teams/teams.component.css delete mode 100644 kontor-angular/src/app/kontor/tysc/teams/teams.component.html delete mode 100644 kontor-angular/src/app/kontor/tysc/teams/teams.component.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.css delete mode 100644 kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.html delete mode 100644 kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/tysc-section.component.css delete mode 100644 kontor-angular/src/app/kontor/tysc/tysc-section.component.html delete mode 100644 kontor-angular/src/app/kontor/tysc/tysc-section.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/tysc-section.component.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/tysc.routes.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/vendors/vendors.component.css delete mode 100644 kontor-angular/src/app/kontor/tysc/vendors/vendors.component.html delete mode 100644 kontor-angular/src/app/kontor/tysc/vendors/vendors.component.spec.ts delete mode 100644 kontor-angular/src/app/kontor/tysc/vendors/vendors.component.ts rename kontor-angular/src/app/{kontor/comic/comic-navigation/comic-navigation.component.css => media/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 create mode 100644 kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts create mode 100644 kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.ts rename kontor-angular/src/app/{kontor/comic/comic-section.component.css => media/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 rename kontor-angular/src/app/{kontor/comic/comics/comic-details/comic-details.component.css => media/media-overview/media-overview.component.css} (100%) create mode 100644 kontor-angular/src/app/media/media-overview/media-overview.component.html rename kontor-angular/src/app/{kontor/comic/comic-section.component.spec.ts => media/media-overview/media-overview.component.spec.ts} (51%) create mode 100644 kontor-angular/src/app/media/media-overview/media-overview.component.ts rename kontor-angular/src/app/{kontor/comic/comics/comic/comic.component.css => media/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 create mode 100644 kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts create mode 100644 kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.ts rename kontor-angular/src/app/{kontor/comic/comics/comics.component.css => tysc/cardset/cardset-list/cardset-list.component.css} (100%) create mode 100644 kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.html rename kontor-angular/src/app/{kontor/media/media-actors/media-actors.component.spec.ts => tysc/cardset/cardset-list/cardset-list.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.ts rename kontor-angular/src/app/{kontor/comic/publishers/publishers.component.css => tysc/player/player-list/player-list.component.css} (100%) 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 rename kontor-angular/src/app/{kontor/home/kontor-home/kontor-home.component.css => tysc/position/position-list/position-list.component.css} (100%) create mode 100644 kontor-angular/src/app/tysc/position/position-list/position-list.component.html rename kontor-angular/src/app/{kontor/footer/kontor-footer/kontor-footer.component.spec.ts => tysc/position/position-list/position-list.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/tysc/position/position-list/position-list.component.ts rename kontor-angular/src/app/{kontor/media/media-actors/media-actors.component.css => tysc/sport/sport-list/sport-list.component.css} (100%) create mode 100644 kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.html rename kontor-angular/src/app/{kontor/comic/comics/comic/comic.component.spec.ts => tysc/sport/sport-list/sport-list.component.spec.ts} (53%) create mode 100644 kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.ts rename kontor-angular/src/app/{kontor/media/media-files/media-files.component.css => tysc/sport/sport-selector/sport-selector.component.css} (100%) 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 rename kontor-angular/src/app/{kontor/media/media-navigation/media-navigation.component.css => tysc/team/team-list/team-list.component.css} (100%) create mode 100644 kontor-angular/src/app/tysc/team/team-list/team-list.component.html rename kontor-angular/src/app/{kontor/comic/artists/artist/artist.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 rename kontor-angular/src/app/{kontor/media/media-videos/media-videos.component.css => tysc/tysc-menu/tysc-menu.component.css} (100%) create mode 100644 kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.html rename kontor-angular/src/app/{kontor/comic/artists/artists.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 rename kontor-angular/src/app/{kontor/media/media.component.css => tysc/vendor/vendor-list/vendor-list.component.css} (100%) 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/angular.json b/kontor-angular/angular.json index 96caa46..6c196b3 100644 --- a/kontor-angular/angular.json +++ b/kontor-angular/angular.json @@ -15,6 +15,7 @@ "options": { "browser": "src/main.ts", "polyfills": [ + "zone.js" ], "tsConfig": "tsconfig.app.json", "assets": [ diff --git a/kontor-angular/src/app/app.component.html b/kontor-angular/src/app/app.component.html index 0fc5b3d..def9b90 100644 --- a/kontor-angular/src/app/app.component.html +++ b/kontor-angular/src/app/app.component.html @@ -1,6 +1,5 @@
-
diff --git a/kontor-angular/src/app/app.component.ts b/kontor-angular/src/app/app.component.ts index a4f231b..f8f2137 100644 --- a/kontor-angular/src/app/app.component.ts +++ b/kontor-angular/src/app/app.component.ts @@ -2,11 +2,10 @@ import { Component } from '@angular/core'; import { RouterOutlet } from '@angular/router'; import { KontorHeaderComponent } from "./kontor/header/header.component"; import { KontorFooterComponent } from './kontor/footer/footer.component'; -import { KontorNavigationComponent } from "./kontor/navigation/kontor-navigation/kontor-navigation.component"; @Component({ selector: 'app-root', - imports: [RouterOutlet, KontorHeaderComponent, KontorFooterComponent, KontorNavigationComponent], + imports: [RouterOutlet, KontorHeaderComponent, KontorFooterComponent], templateUrl: './app.component.html', styleUrl: './app.component.css' }) diff --git a/kontor-angular/src/app/app.config.ts b/kontor-angular/src/app/app.config.ts index 874fd39..97842c8 100644 --- a/kontor-angular/src/app/app.config.ts +++ b/kontor-angular/src/app/app.config.ts @@ -1,4 +1,4 @@ -import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection, provideZonelessChangeDetection } from '@angular/core'; +import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection } from '@angular/core'; import { provideRouter, withComponentInputBinding } from '@angular/router'; import { routes } from './app.routes'; @@ -7,8 +7,7 @@ import { provideHttpClient } from '@angular/common/http'; export const appConfig: ApplicationConfig = { providers: [ provideBrowserGlobalErrorListeners(), - provideZonelessChangeDetection(), - // provideZoneChangeDetection({ eventCoalescing: true }), + provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes, withComponentInputBinding()), provideHttpClient(), ] diff --git a/kontor-angular/src/app/app.routes.ts b/kontor-angular/src/app/app.routes.ts index 9b196dd..7740668 100644 --- a/kontor-angular/src/app/app.routes.ts +++ b/kontor-angular/src/app/app.routes.ts @@ -1,27 +1,52 @@ import { Routes } from '@angular/router'; -import { routes as comicRoutes } from './kontor/comic/comic.routes'; -import { routes as tyscRoutes } from './kontor/tysc/tysc.routes'; -import { routes as mediaRoutes } from './kontor/media/media.routes'; -import { TyscSectionComponent } from './kontor/tysc/tysc-section.component'; -import { ComicSectionComponent } from './kontor/comic/comic-section.component'; -import { MediaComponent } from './kontor/media/media.component'; -import { KontorHomeComponent } from './kontor/home/kontor-home/kontor-home.component'; +import { KontorComponent } from './kontor/kontor.component'; +import { Login } from './common/login/login'; +import { ComicOverviewComponent } from './comic/comic-overview/comic-overview.component'; +import { MediaOverviewComponent } from './media/media-overview/media-overview.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, }, + { path: 'login', component: Login, }, { - path: '', - component: KontorHomeComponent, + path: 'comic', component: ComicOverviewComponent, + children: [ + { path: '', component: ComicListComponent}, + { path: 'comics', component: ComicListComponent}, + { path: 'publisher', component: PublisherListComponent}, + { path: 'artist', component: ArtistListComponent}, + ], }, { - path: 'comic', component: ComicSectionComponent, - children: comicRoutes, + 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: 'tysc', component: TyscSectionComponent, - children: tyscRoutes, - }, - { - path: 'media', component: MediaComponent, - children: mediaRoutes, + path: 'media', component: MediaOverviewComponent, + children: [ + { 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-detail/artist-detail.component.css b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.css new file mode 100644 index 0000000..c34bfa6 --- /dev/null +++ b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.css @@ -0,0 +1,5 @@ +div { + border-radius: 6px; + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.1); + overflow: hidden; +} diff --git a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.html b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.html new file mode 100644 index 0000000..8c949f3 --- /dev/null +++ b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.html @@ -0,0 +1,5 @@ + diff --git a/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.spec.ts b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.spec.ts similarity index 52% rename from kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.spec.ts rename to kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.spec.ts index 5d7d15a..cf1fa88 100644 --- a/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.spec.ts +++ b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ComicDetailsComponent } from './comic-details.component'; +import { ArtistDetailComponent } from './artist-detail.component'; -describe('ComicDetailsComponent', () => { - let component: ComicDetailsComponent; - let fixture: ComponentFixture; +describe('ArtistDetailComponent', () => { + let component: ArtistDetailComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ComicDetailsComponent] + imports: [ArtistDetailComponent] }) .compileComponents(); - fixture = TestBed.createComponent(ComicDetailsComponent); + fixture = TestBed.createComponent(ArtistDetailComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.ts b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.ts new file mode 100644 index 0000000..5bf9f95 --- /dev/null +++ b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.ts @@ -0,0 +1,14 @@ +import { Component, input, signal } from '@angular/core'; +import { Artist } from '../artist.model'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-artist-detail', + imports: [RouterLink, RouterLinkActive], + templateUrl: './artist-detail.component.html', + styleUrl: './artist-detail.component.css' +}) +export class ArtistDetailComponent { + artist = input.required(); + +} diff --git a/kontor-angular/src/app/kontor/comic/artists/artist-list/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/kontor/comic/artists/artist-list/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/kontor/comic/artists/artist-list/artist-list.component.html b/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.html similarity index 64% rename from kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.html rename to kontor-angular/src/app/comic/artist/artist-list/artist-list.component.html index 4912d0a..984357c 100644 --- a/kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.html +++ b/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.html @@ -1,7 +1,7 @@
    @for (artist of artists(); track artist.id) {
  • - +
  • }
diff --git a/kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.spec.ts b/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.spec.ts similarity index 100% rename from kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.spec.ts rename to kontor-angular/src/app/comic/artist/artist-list/artist-list.component.spec.ts diff --git a/kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.ts b/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.ts similarity index 72% rename from kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.ts rename to kontor-angular/src/app/comic/artist/artist-list/artist-list.component.ts index 71d78ab..441b24a 100644 --- a/kontor-angular/src/app/kontor/comic/artists/artist-list/artist-list.component.ts +++ b/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.ts @@ -1,11 +1,11 @@ -import { ArtistComponent } from './../artist/artist.component'; import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; import { Artist } from '../artist.model'; -import { ArtistsService } from '../artists.service'; +import { ArtistService } from '../artist.service'; +import { ArtistDetailComponent } from "../artist-detail/artist-detail.component"; @Component({ selector: 'app-artist-list', - imports: [ArtistComponent], + imports: [ArtistDetailComponent], templateUrl: './artist-list.component.html', styleUrl: './artist-list.component.css' }) @@ -13,12 +13,12 @@ export class ArtistListComponent implements OnInit { artists = signal(undefined); isFetching = signal(false); error = signal(''); - private artistsService = inject(ArtistsService); + private artistService = inject(ArtistService); private destroyRef = inject(DestroyRef); ngOnInit() { this.isFetching.set(true); - const subscription = this.artistsService.loadArtists().subscribe({ + const subscription = this.artistService.loadArtists().subscribe({ next: (artists) => { this.artists.set(artists); }, @@ -27,11 +27,12 @@ export class ArtistListComponent implements OnInit { }, complete: () => { this.isFetching.set(false); - } + }, }); this.destroyRef.onDestroy(() => { subscription.unsubscribe(); - }) + }); } + } diff --git a/kontor-angular/src/app/kontor/comic/artists/artist.model.ts b/kontor-angular/src/app/comic/artist/artist.model.ts similarity index 100% rename from kontor-angular/src/app/kontor/comic/artists/artist.model.ts rename to kontor-angular/src/app/comic/artist/artist.model.ts diff --git a/kontor-angular/src/app/kontor/comic/artists/artists.service.ts b/kontor-angular/src/app/comic/artist/artist.service.ts similarity index 82% rename from kontor-angular/src/app/kontor/comic/artists/artists.service.ts rename to kontor-angular/src/app/comic/artist/artist.service.ts index e2ae1e6..6852eba 100644 --- a/kontor-angular/src/app/kontor/comic/artists/artists.service.ts +++ b/kontor-angular/src/app/comic/artist/artist.service.ts @@ -1,19 +1,21 @@ -import { HttpClient } from "@angular/common/http"; import { inject, Injectable, signal } from "@angular/core"; +import { ErrorService } from "../../shared/error.service"; +import { HttpClient } from "@angular/common/http"; import { Artist } from "./artist.model"; import { catchError, map, throwError } from "rxjs"; @Injectable({ - providedIn: 'root' + providedIn: 'root', }) -export class ArtistsService { +export class ArtistService { + private errorService = inject(ErrorService); private httpClient = inject(HttpClient); private artists = signal([]); loadedArtists = this.artists.asReadonly(); loadArtists() { - return this.fetchArtists('http://127.0.0.1:8800/api/comics/artists', 'Someting went wrong fetching artists. Please try again later.'); + return this.fetchArtists('http://127.0.0.1:8800/api/comics/artists', 'Someting went wrong fetching artists. Please try again later-'); } private fetchArtists(url: string, errorMessage: string) { diff --git a/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.css b/kontor-angular/src/app/comic/comic-overview/comic-overview.component.css similarity index 100% rename from kontor-angular/src/app/kontor/comic/artists/artist/artist.component.css rename to kontor-angular/src/app/comic/comic-overview/comic-overview.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 new file mode 100644 index 0000000..54c8b3c --- /dev/null +++ b/kontor-angular/src/app/comic/comic-overview/comic-overview.component.html @@ -0,0 +1,16 @@ + + + diff --git a/kontor-angular/src/app/kontor/tysc/teams/teams.component.spec.ts b/kontor-angular/src/app/comic/comic-overview/comic-overview.component.spec.ts similarity index 55% rename from kontor-angular/src/app/kontor/tysc/teams/teams.component.spec.ts rename to kontor-angular/src/app/comic/comic-overview/comic-overview.component.spec.ts index 224a144..a61f624 100644 --- a/kontor-angular/src/app/kontor/tysc/teams/teams.component.spec.ts +++ b/kontor-angular/src/app/comic/comic-overview/comic-overview.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { TeamsComponent } from './teams.component'; +import { ComicOverview } from './comic-overview.component'; -describe('TeamsComponent', () => { - let component: TeamsComponent; - let fixture: ComponentFixture; +describe('ComicOverview', () => { + let component: ComicOverview; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [TeamsComponent] + imports: [ComicOverview] }) .compileComponents(); - fixture = TestBed.createComponent(TeamsComponent); + fixture = TestBed.createComponent(ComicOverview); component = fixture.componentInstance; fixture.detectChanges(); }); 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 new file mode 100644 index 0000000..32c15f4 --- /dev/null +++ b/kontor-angular/src/app/comic/comic-overview/comic-overview.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { RouterLink, RouterOutlet, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-comic-overview', + imports: [RouterLink, RouterOutlet, RouterLinkActive], + templateUrl: './comic-overview.component.html', + styleUrl: './comic-overview.component.css' +}) +export class ComicOverviewComponent { + +} diff --git a/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-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/kontor/comic/comics/comic-list/comic-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/kontor/comic/comics/comic-list/comic-list.component.spec.ts b/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.spec.ts similarity index 100% rename from kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.spec.ts rename to kontor-angular/src/app/comic/comic/comic-list/comic-list.component.spec.ts 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/kontor/comic/artists/artists.component.css b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.css similarity index 100% rename from kontor-angular/src/app/kontor/comic/artists/artists.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/publisher-list.component.ts b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.ts new file mode 100644 index 0000000..43daa01 --- /dev/null +++ b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-publisher-list', + imports: [], + templateUrl: './publisher-list.component.html', + styleUrl: './publisher-list.component.css' +}) +export class PublisherListComponent { + +} diff --git a/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.html b/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.html deleted file mode 100644 index de0a005..0000000 --- a/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.ts b/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.ts deleted file mode 100644 index 5903c94..0000000 --- a/kontor-angular/src/app/kontor/comic/artists/artist/artist.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Component, input } from '@angular/core'; -import { RouterLink, RouterLinkActive } from '@angular/router'; -import { Artist } from '../artist.model'; - -@Component({ - selector: 'app-artist', - imports: [RouterLink, RouterLinkActive], - templateUrl: './artist.component.html', - styleUrl: './artist.component.css' -}) -export class ArtistComponent { - artist = input.required(); -} diff --git a/kontor-angular/src/app/kontor/comic/artists/artists.component.html b/kontor-angular/src/app/kontor/comic/artists/artists.component.html deleted file mode 100644 index 4e1ec74..0000000 --- a/kontor-angular/src/app/kontor/comic/artists/artists.component.html +++ /dev/null @@ -1,7 +0,0 @@ -

artists works!

-
- -
-
-

Artist Details

-
diff --git a/kontor-angular/src/app/kontor/comic/artists/artists.component.ts b/kontor-angular/src/app/kontor/comic/artists/artists.component.ts deleted file mode 100644 index f063a8e..0000000 --- a/kontor-angular/src/app/kontor/comic/artists/artists.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component } from '@angular/core'; -import { ArtistListComponent } from "./artist-list/artist-list.component"; - -@Component({ - selector: 'app-artists', - imports: [ArtistListComponent], - templateUrl: './artists.component.html', - styleUrl: './artists.component.css' -}) -export class ArtistsComponent { - -} diff --git a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.html b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.html deleted file mode 100644 index c7fb516..0000000 --- a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.spec.ts deleted file mode 100644 index faab5bb..0000000 --- a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { ComicNavigationComponent } from './comic-navigation.component'; - -describe('ComicNavigationComponent', () => { - let component: ComicNavigationComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [ComicNavigationComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ComicNavigationComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.ts b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.ts deleted file mode 100644 index 62dce29..0000000 --- a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component } from '@angular/core'; -import { RouterLink, RouterLinkActive } from '@angular/router'; - -@Component({ - selector: 'app-comic-navigation', - imports: [RouterLink, RouterLinkActive], - templateUrl: './comic-navigation.component.html', - styleUrl: './comic-navigation.component.css' -}) -export class ComicNavigationComponent { - -} diff --git a/kontor-angular/src/app/kontor/comic/comic-section.component.html b/kontor-angular/src/app/kontor/comic/comic-section.component.html deleted file mode 100644 index 570e4d6..0000000 --- a/kontor-angular/src/app/kontor/comic/comic-section.component.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/kontor-angular/src/app/kontor/comic/comic-section.component.ts b/kontor-angular/src/app/kontor/comic/comic-section.component.ts deleted file mode 100644 index 3ee6a6f..0000000 --- a/kontor-angular/src/app/kontor/comic/comic-section.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Component } from '@angular/core'; -import { RouterOutlet } from '@angular/router'; -import { ComicNavigationComponent } from "./comic-navigation/comic-navigation.component"; - -@Component({ - selector: 'app-comic-section', - imports: [RouterOutlet, ComicNavigationComponent], - templateUrl: './comic-section.component.html', - styleUrl: './comic-section.component.css' -}) -export class ComicSectionComponent { - -} diff --git a/kontor-angular/src/app/kontor/comic/comic.routes.ts b/kontor-angular/src/app/kontor/comic/comic.routes.ts deleted file mode 100644 index 389e589..0000000 --- a/kontor-angular/src/app/kontor/comic/comic.routes.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Routes } from "@angular/router"; -import { ArtistsComponent } from "./artists/artists.component"; -import { PublishersComponent } from "./publishers/publishers.component"; -import { ComicDetailsComponent } from "./comics/comic-details/comic-details.component"; -import { ComicSectionComponent } from "./comic-section.component"; -import { ComicsComponent } from "./comics/comics.component"; - -export const routes: Routes = [ - { - path: '', - component: ComicSectionComponent, - children: [ - { - path: 'comics', - component: ComicsComponent, - }, - { - path: 'comics/:comicId', - component: ComicDetailsComponent, - }, - { - path: 'artists', - component: ArtistsComponent, - }, - { - path: 'artists/:artistId', - component: ArtistsComponent, - }, - { - path: 'publishers', - component: PublishersComponent, - }, - { - path: 'publishers/:publisherId', - component: PublishersComponent, - }, - ], - }, -]; diff --git a/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.html b/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.html deleted file mode 100644 index e6f30bf..0000000 --- a/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.html +++ /dev/null @@ -1,7 +0,0 @@ -

comic-details works!

-
- -
-
-

Comic Title

-
diff --git a/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.ts b/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.ts deleted file mode 100644 index 89e3909..0000000 --- a/kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Component, input } from '@angular/core'; -import { ComicListComponent } from "../comic-list/comic-list.component"; -import { Comic } from '../comic.model'; - -@Component({ - selector: 'app-comic-details', - imports: [ComicListComponent], - templateUrl: './comic-details.component.html', - styleUrl: './comic-details.component.css' -}) -export class ComicDetailsComponent { - comic = input.required(); -} diff --git a/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.html b/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.html deleted file mode 100644 index 755e184..0000000 --- a/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.html +++ /dev/null @@ -1,8 +0,0 @@ -

comic-list works!

-
    - @for (comic of comics(); track comic.id) { -
  • - -
  • - } -
diff --git a/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.ts b/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.ts deleted file mode 100644 index 2858e39..0000000 --- a/kontor-angular/src/app/kontor/comic/comics/comic-list/comic-list.component.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; -import { Comic } from '../comic.model'; -import { ComicComponent } from "../comic/comic.component"; -import { ComicsService } from '../comics.service'; - -@Component({ - selector: 'app-comic-list', - imports: [ComicComponent], - templateUrl: './comic-list.component.html', - styleUrl: './comic-list.component.css' -}) -export class ComicListComponent implements OnInit { - comics = signal(undefined); - isFetching = signal(false); - error = signal(''); - private comicsService = inject(ComicsService); - private destroyRef = inject(DestroyRef); - - ngOnInit() { - this.isFetching.set(true); - const subscription = this.comicsService.loadComics().subscribe({ - next: (comics) => { - this.comics.set(comics); - }, - 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/kontor/comic/comics/comic.model.ts b/kontor-angular/src/app/kontor/comic/comics/comic.model.ts deleted file mode 100644 index 444d197..0000000 --- a/kontor-angular/src/app/kontor/comic/comics/comic.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface Comic { - id: string; - title: string; - completed: boolean; -} diff --git a/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.html b/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.html deleted file mode 100644 index 6113794..0000000 --- a/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.html +++ /dev/null @@ -1,6 +0,0 @@ -

comic works!

- diff --git a/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.ts b/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.ts deleted file mode 100644 index a45e42c..0000000 --- a/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Component, input } from '@angular/core'; -import { Comic } from '../comic.model'; -import { RouterLink, RouterLinkActive } from '@angular/router'; - -@Component({ - selector: 'app-comic', - imports: [RouterLink, RouterLinkActive], - templateUrl: './comic.component.html', - styleUrl: './comic.component.css' -}) -export class ComicComponent { - comic = input.required(); -} diff --git a/kontor-angular/src/app/kontor/comic/comics/comics.component.html b/kontor-angular/src/app/kontor/comic/comics/comics.component.html deleted file mode 100644 index b29db66..0000000 --- a/kontor-angular/src/app/kontor/comic/comics/comics.component.html +++ /dev/null @@ -1,4 +0,0 @@ -

comics works!

-
- -
diff --git a/kontor-angular/src/app/kontor/comic/comics/comics.component.spec.ts b/kontor-angular/src/app/kontor/comic/comics/comics.component.spec.ts deleted file mode 100644 index 3b0af25..0000000 --- a/kontor-angular/src/app/kontor/comic/comics/comics.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { ComicsComponent } from './comics.component'; - -describe('ComicsComponent', () => { - let component: ComicsComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [ComicsComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ComicsComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/comic/comics/comics.component.ts b/kontor-angular/src/app/kontor/comic/comics/comics.component.ts deleted file mode 100644 index 742b179..0000000 --- a/kontor-angular/src/app/kontor/comic/comics/comics.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component, signal } from '@angular/core'; -import { ComicListComponent } from "./comic-list/comic-list.component"; -import { ComicDetailsComponent } from './comic-details/comic-details.component'; - -@Component({ - selector: 'app-comics', - imports: [ComicListComponent], - templateUrl: './comics.component.html', - styleUrl: './comics.component.css' -}) -export class ComicsComponent { -} diff --git a/kontor-angular/src/app/kontor/comic/comics/comics.service.ts b/kontor-angular/src/app/kontor/comic/comics/comics.service.ts deleted file mode 100644 index b747385..0000000 --- a/kontor-angular/src/app/kontor/comic/comics/comics.service.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { HttpClient } from "@angular/common/http"; -import { inject, Injectable, signal } from "@angular/core"; -import { Comic } from "./comic.model"; -import { catchError, map, throwError } from "rxjs"; - -@Injectable({ - providedIn: 'root' -}) -export class ComicsService { - private httpClient = inject(HttpClient); - private comics = signal([]); - - loadedComics = this.comics.asReadonly(); - - loadComics() { - return this.fetchComics('http://127.0.0.1:8800/api/comics/comics', 'Someting went wrong fetching comics. Please try again later.'); - } - - private fetchComics(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/kontor/comic/publishers/publishers.component.html b/kontor-angular/src/app/kontor/comic/publishers/publishers.component.html deleted file mode 100644 index 2268b57..0000000 --- a/kontor-angular/src/app/kontor/comic/publishers/publishers.component.html +++ /dev/null @@ -1 +0,0 @@ -

publishers works!

diff --git a/kontor-angular/src/app/kontor/comic/publishers/publishers.component.spec.ts b/kontor-angular/src/app/kontor/comic/publishers/publishers.component.spec.ts deleted file mode 100644 index 91bfdee..0000000 --- a/kontor-angular/src/app/kontor/comic/publishers/publishers.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PublishersComponent } from './publishers.component'; - -describe('PublishersComponent', () => { - let component: PublishersComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [PublishersComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(PublishersComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/comic/publishers/publishers.component.ts b/kontor-angular/src/app/kontor/comic/publishers/publishers.component.ts deleted file mode 100644 index a7711a7..0000000 --- a/kontor-angular/src/app/kontor/comic/publishers/publishers.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-publishers', - imports: [], - templateUrl: './publishers.component.html', - styleUrl: './publishers.component.css' -}) -export class PublishersComponent { - -} diff --git a/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.css b/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.css deleted file mode 100644 index 5bec969..0000000 --- a/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.css +++ /dev/null @@ -1,9 +0,0 @@ -footer { - padding: 30px; - text-align: center; - background-color: lightblue; -} - -footer div { - font-size: 20px; -} diff --git a/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.html b/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.html deleted file mode 100644 index 0cb97f4..0000000 --- a/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.html +++ /dev/null @@ -1,3 +0,0 @@ -
-
Kontor Footer
-
diff --git a/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.ts b/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.ts deleted file mode 100644 index 9c80368..0000000 --- a/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-kontor-footer', - imports: [], - templateUrl: './kontor-footer.component.html', - styleUrl: './kontor-footer.component.css' -}) -export class KontorFooterComponent { - -} diff --git a/kontor-angular/src/app/kontor/header/header.component.html b/kontor-angular/src/app/kontor/header/header.component.html index 3191f24..9c1f7a2 100644 --- a/kontor-angular/src/app/kontor/header/header.component.html +++ b/kontor-angular/src/app/kontor/header/header.component.html @@ -2,4 +2,18 @@

{{ title() }}

+ + diff --git a/kontor-angular/src/app/kontor/header/header.component.ts b/kontor-angular/src/app/kontor/header/header.component.ts index 269b9f0..8808cc8 100644 --- a/kontor-angular/src/app/kontor/header/header.component.ts +++ b/kontor-angular/src/app/kontor/header/header.component.ts @@ -3,7 +3,7 @@ import { RouterLink, RouterLinkActive } from '@angular/router'; @Component({ selector: 'kontor-header', - imports: [], + imports: [RouterLink, RouterLinkActive], templateUrl: './header.component.html', styleUrl: './header.component.css' }) diff --git a/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.css b/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.css deleted file mode 100644 index e8a1a80..0000000 --- a/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.css +++ /dev/null @@ -1,9 +0,0 @@ -.header { - padding: 30px; - text-align: center; - background-color: lightblue; -} - -.header h1 { - font-size: 50px; -} diff --git a/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.html b/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.html deleted file mode 100644 index 3191f24..0000000 --- a/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.html +++ /dev/null @@ -1,5 +0,0 @@ -
-
-

{{ title() }}

-
-
diff --git a/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.spec.ts b/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.spec.ts deleted file mode 100644 index 2e4ac4b..0000000 --- a/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { KontorHeaderComponent } from './kontor-header.component'; - -describe('KontorHeaderComponent', () => { - let component: KontorHeaderComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [KontorHeaderComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(KontorHeaderComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.ts b/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.ts deleted file mode 100644 index 703d87a..0000000 --- a/kontor-angular/src/app/kontor/header/kontor-header/kontor-header.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component, signal } from '@angular/core'; - -@Component({ - selector: 'app-kontor-header', - imports: [], - templateUrl: './kontor-header.component.html', - styleUrl: './kontor-header.component.css' -}) -export class KontorHeaderComponent { - protected readonly title = signal('Kontor'); -} diff --git a/kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.html b/kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.html deleted file mode 100644 index 2caacf9..0000000 --- a/kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.html +++ /dev/null @@ -1 +0,0 @@ -

kontor-home works!

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

media-actors works!

diff --git a/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.ts b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.ts deleted file mode 100644 index 8fbb7f8..0000000 --- a/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-media-actors', - imports: [], - templateUrl: './media-actors.component.html', - styleUrl: './media-actors.component.css' -}) -export class MediaActorsComponent { - -} diff --git a/kontor-angular/src/app/kontor/media/media-files/media-files.component.html b/kontor-angular/src/app/kontor/media/media-files/media-files.component.html deleted file mode 100644 index 367cd62..0000000 --- a/kontor-angular/src/app/kontor/media/media-files/media-files.component.html +++ /dev/null @@ -1 +0,0 @@ -

media-files works!

diff --git a/kontor-angular/src/app/kontor/media/media-files/media-files.component.spec.ts b/kontor-angular/src/app/kontor/media/media-files/media-files.component.spec.ts deleted file mode 100644 index c8f1c9f..0000000 --- a/kontor-angular/src/app/kontor/media/media-files/media-files.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { MediaFilesComponent } from './media-files.component'; - -describe('MediaFilesComponent', () => { - let component: MediaFilesComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [MediaFilesComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(MediaFilesComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts b/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts deleted file mode 100644 index 58d983c..0000000 --- a/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-media-files', - imports: [], - templateUrl: './media-files.component.html', - styleUrl: './media-files.component.css' -}) -export class MediaFilesComponent { - -} diff --git a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html deleted file mode 100644 index cd3857f..0000000 --- a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.spec.ts b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.spec.ts deleted file mode 100644 index e1c7fdf..0000000 --- a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { MediaNavigationComponent } from './media-navigation.component'; - -describe('MediaNavigationComponent', () => { - let component: MediaNavigationComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [MediaNavigationComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(MediaNavigationComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.ts b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.ts deleted file mode 100644 index 673afd9..0000000 --- a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component } from '@angular/core'; -import { RouterLink, RouterLinkActive } from '@angular/router'; - -@Component({ - selector: 'app-media-navigation', - imports: [RouterLink, RouterLinkActive], - templateUrl: './media-navigation.component.html', - styleUrl: './media-navigation.component.css' -}) -export class MediaNavigationComponent { - -} diff --git a/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.html b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.html deleted file mode 100644 index 2aaafcb..0000000 --- a/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.html +++ /dev/null @@ -1 +0,0 @@ -

media-videos works!

diff --git a/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.spec.ts b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.spec.ts deleted file mode 100644 index ccde24c..0000000 --- a/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { MediaVideosComponent } from './media-videos.component'; - -describe('MediaVideosComponent', () => { - let component: MediaVideosComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [MediaVideosComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(MediaVideosComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.ts b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.ts deleted file mode 100644 index 5b1f52e..0000000 --- a/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-media-videos', - imports: [], - templateUrl: './media-videos.component.html', - styleUrl: './media-videos.component.css' -}) -export class MediaVideosComponent { - -} diff --git a/kontor-angular/src/app/kontor/media/media.component.html b/kontor-angular/src/app/kontor/media/media.component.html deleted file mode 100644 index 935917e..0000000 --- a/kontor-angular/src/app/kontor/media/media.component.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/kontor-angular/src/app/kontor/media/media.component.spec.ts b/kontor-angular/src/app/kontor/media/media.component.spec.ts deleted file mode 100644 index 366f292..0000000 --- a/kontor-angular/src/app/kontor/media/media.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { MediaComponent } from './media.component'; - -describe('MediaComponent', () => { - let component: MediaComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [MediaComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(MediaComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/media/media.component.ts b/kontor-angular/src/app/kontor/media/media.component.ts deleted file mode 100644 index 6dc8018..0000000 --- a/kontor-angular/src/app/kontor/media/media.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Component } from '@angular/core'; -import { MediaNavigationComponent } from "./media-navigation/media-navigation.component"; -import { RouterOutlet } from '@angular/router'; - -@Component({ - selector: 'app-media', - imports: [MediaNavigationComponent, RouterOutlet], - templateUrl: './media.component.html', - styleUrl: './media.component.css' -}) -export class MediaComponent { - -} diff --git a/kontor-angular/src/app/kontor/media/media.routes.ts b/kontor-angular/src/app/kontor/media/media.routes.ts deleted file mode 100644 index 556e9cd..0000000 --- a/kontor-angular/src/app/kontor/media/media.routes.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Routes } from "@angular/router"; -import { MediaComponent } from "./media.component"; -import { MediaFilesComponent } from "./media-files/media-files.component"; -import { MediaActorsComponent } from "./media-actors/media-actors.component"; -import { MediaVideosComponent } from "./media-videos/media-videos.component"; - -export const routes: Routes = [ - { - path: '', - component: MediaComponent, - children: [ - { - path: 'mediafiles', - component: MediaFilesComponent, - }, - { - path: 'mediaactors', - component: MediaActorsComponent, - }, - { - path: 'mediavideos', - component: MediaVideosComponent, - }, - ], - }, -]; diff --git a/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.css b/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.css deleted file mode 100644 index d90b8e6..0000000 --- a/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.css +++ /dev/null @@ -1 +0,0 @@ -/* Style the top navigation bar */ diff --git a/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.html b/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.html deleted file mode 100644 index bd3d6a0..0000000 --- a/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.html +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.spec.ts b/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.spec.ts deleted file mode 100644 index 1575b00..0000000 --- a/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { KontorNavigationComponent } from './kontor-navigation.component'; - -describe('KontorNavigationComponent', () => { - let component: KontorNavigationComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [KontorNavigationComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(KontorNavigationComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.ts b/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.ts deleted file mode 100644 index d571a25..0000000 --- a/kontor-angular/src/app/kontor/navigation/kontor-navigation/kontor-navigation.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component } from '@angular/core'; -import { RouterLink, RouterLinkActive } from '@angular/router'; - -@Component({ - selector: 'app-kontor-navigation', - imports: [RouterLink, RouterLinkActive], - templateUrl: './kontor-navigation.component.html', - styleUrl: './kontor-navigation.component.css' -}) -export class KontorNavigationComponent { - -} diff --git a/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.css b/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.css deleted file mode 100644 index e69de29..0000000 diff --git a/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.html b/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.html deleted file mode 100644 index 59cab54..0000000 --- a/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.html +++ /dev/null @@ -1 +0,0 @@ -

cardsets works!

diff --git a/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.spec.ts b/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.spec.ts deleted file mode 100644 index 1b8a4b5..0000000 --- a/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { CardsetsComponent } from './cardsets.component'; - -describe('CardsetsComponent', () => { - let component: CardsetsComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [CardsetsComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(CardsetsComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.ts b/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.ts deleted file mode 100644 index 78f83fe..0000000 --- a/kontor-angular/src/app/kontor/tysc/cardsets/cardsets.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-cardsets', - imports: [], - templateUrl: './cardsets.component.html', - styleUrl: './cardsets.component.css' -}) -export class CardsetsComponent { - -} diff --git a/kontor-angular/src/app/kontor/tysc/players/players.component.css b/kontor-angular/src/app/kontor/tysc/players/players.component.css deleted file mode 100644 index e69de29..0000000 diff --git a/kontor-angular/src/app/kontor/tysc/players/players.component.html b/kontor-angular/src/app/kontor/tysc/players/players.component.html deleted file mode 100644 index 2db5c66..0000000 --- a/kontor-angular/src/app/kontor/tysc/players/players.component.html +++ /dev/null @@ -1 +0,0 @@ -

players works!

diff --git a/kontor-angular/src/app/kontor/tysc/players/players.component.spec.ts b/kontor-angular/src/app/kontor/tysc/players/players.component.spec.ts deleted file mode 100644 index 2a4a85f..0000000 --- a/kontor-angular/src/app/kontor/tysc/players/players.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PlayersComponent } from './players.component'; - -describe('PlayersComponent', () => { - let component: PlayersComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [PlayersComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(PlayersComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/tysc/players/players.component.ts b/kontor-angular/src/app/kontor/tysc/players/players.component.ts deleted file mode 100644 index fe51eba..0000000 --- a/kontor-angular/src/app/kontor/tysc/players/players.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-players', - imports: [], - templateUrl: './players.component.html', - styleUrl: './players.component.css' -}) -export class PlayersComponent { - -} diff --git a/kontor-angular/src/app/kontor/tysc/positions/positions.component.css b/kontor-angular/src/app/kontor/tysc/positions/positions.component.css deleted file mode 100644 index e69de29..0000000 diff --git a/kontor-angular/src/app/kontor/tysc/positions/positions.component.html b/kontor-angular/src/app/kontor/tysc/positions/positions.component.html deleted file mode 100644 index 9f6f0df..0000000 --- a/kontor-angular/src/app/kontor/tysc/positions/positions.component.html +++ /dev/null @@ -1 +0,0 @@ -

positions works!

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

sports works!

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

teams works!

diff --git a/kontor-angular/src/app/kontor/tysc/teams/teams.component.ts b/kontor-angular/src/app/kontor/tysc/teams/teams.component.ts deleted file mode 100644 index 922c64c..0000000 --- a/kontor-angular/src/app/kontor/tysc/teams/teams.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-teams', - imports: [], - templateUrl: './teams.component.html', - styleUrl: './teams.component.css' -}) -export class TeamsComponent { - -} diff --git a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.css b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.css deleted file mode 100644 index e69de29..0000000 diff --git a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.html b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.html deleted file mode 100644 index 67b5fb9..0000000 --- a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.html +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.spec.ts deleted file mode 100644 index 363a185..0000000 --- a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { TyscNavigationComponent } from './tysc-navigation.component'; - -describe('TyscNavigationComponent', () => { - let component: TyscNavigationComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [TyscNavigationComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(TyscNavigationComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.ts deleted file mode 100644 index 0a8cc16..0000000 --- a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component } from '@angular/core'; -import { RouterLink, RouterLinkActive } from '@angular/router'; - -@Component({ - selector: 'app-tysc-navigation', - imports: [RouterLink, RouterLinkActive], - templateUrl: './tysc-navigation.component.html', - styleUrl: './tysc-navigation.component.css' -}) -export class TyscNavigationComponent { - -} diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section.component.css b/kontor-angular/src/app/kontor/tysc/tysc-section.component.css deleted file mode 100644 index e69de29..0000000 diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section.component.html b/kontor-angular/src/app/kontor/tysc/tysc-section.component.html deleted file mode 100644 index 6e5aeb1..0000000 --- a/kontor-angular/src/app/kontor/tysc/tysc-section.component.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-section.component.spec.ts deleted file mode 100644 index c8c34ec..0000000 --- a/kontor-angular/src/app/kontor/tysc/tysc-section.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { TyscSectionComponent } from './tysc-section.component'; - -describe('TyscSectionComponent', () => { - let component: TyscSectionComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [TyscSectionComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(TyscSectionComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-section.component.ts deleted file mode 100644 index 9c05e01..0000000 --- a/kontor-angular/src/app/kontor/tysc/tysc-section.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Component } from '@angular/core'; -import { RouterOutlet } from '@angular/router'; -import { TyscNavigationComponent } from './tysc-navigation/tysc-navigation.component'; - -@Component({ - selector: 'app-tysc-section', - imports: [RouterOutlet, TyscNavigationComponent], - templateUrl: './tysc-section.component.html', - styleUrl: './tysc-section.component.css' -}) -export class TyscSectionComponent { - -} diff --git a/kontor-angular/src/app/kontor/tysc/tysc.routes.ts b/kontor-angular/src/app/kontor/tysc/tysc.routes.ts deleted file mode 100644 index bec1dae..0000000 --- a/kontor-angular/src/app/kontor/tysc/tysc.routes.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Routes } from "@angular/router"; -import { TyscSectionComponent } from "./tysc-section.component"; -import { TeamsComponent } from "./teams/teams.component"; -import { PositionsComponent } from "./positions/positions.component"; -import { PlayersComponent } from "./players/players.component"; -import { CardsetsComponent } from "./cardsets/cardsets.component"; -import { VendorsComponent } from "./vendors/vendors.component"; - -export const routes: Routes = [ - { - path: '', - component: TyscSectionComponent, - children: [ - { - path: 'teams', - component: TeamsComponent, - }, - { - path: 'positions', - component: PositionsComponent, - }, - { - path: 'players', - component: PlayersComponent, - }, - { - path: 'cardsets', - component: CardsetsComponent, - }, - { - path: 'vendors', - component: VendorsComponent, - }, - ], - }, -]; diff --git a/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.css b/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.css deleted file mode 100644 index e69de29..0000000 diff --git a/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.html b/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.html deleted file mode 100644 index a4fc884..0000000 --- a/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.html +++ /dev/null @@ -1 +0,0 @@ -

vendors works!

diff --git a/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.spec.ts b/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.spec.ts deleted file mode 100644 index 48ed75f..0000000 --- a/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { VendorsComponent } from './vendors.component'; - -describe('VendorsComponent', () => { - let component: VendorsComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [VendorsComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(VendorsComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.ts b/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.ts deleted file mode 100644 index edacb9b..0000000 --- a/kontor-angular/src/app/kontor/tysc/vendors/vendors.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-vendors', - imports: [], - templateUrl: './vendors.component.html', - styleUrl: './vendors.component.css' -}) -export class VendorsComponent { - -} diff --git a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.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/kontor/comic/comic-navigation/comic-navigation.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-actor/media-actor-list/media-actor-list.component.spec.ts b/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts new file mode 100644 index 0000000..1eae192 --- /dev/null +++ b/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MediaActorListComponent } from './media-actor-list.component'; + +describe('MediaActorListComponent', () => { + let component: MediaActorListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MediaActorListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MediaActorListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); 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/kontor/comic/comic-section.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/kontor/comic/comic-section.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/kontor/comic/comics/comic-details/comic-details.component.css b/kontor-angular/src/app/media/media-overview/media-overview.component.css similarity index 100% rename from kontor-angular/src/app/kontor/comic/comics/comic-details/comic-details.component.css rename to kontor-angular/src/app/media/media-overview/media-overview.component.css 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 new file mode 100644 index 0000000..4a72d42 --- /dev/null +++ b/kontor-angular/src/app/media/media-overview/media-overview.component.html @@ -0,0 +1,16 @@ + + + diff --git a/kontor-angular/src/app/kontor/comic/comic-section.component.spec.ts b/kontor-angular/src/app/media/media-overview/media-overview.component.spec.ts similarity index 51% rename from kontor-angular/src/app/kontor/comic/comic-section.component.spec.ts rename to kontor-angular/src/app/media/media-overview/media-overview.component.spec.ts index 0ce4d09..ccaf8b5 100644 --- a/kontor-angular/src/app/kontor/comic/comic-section.component.spec.ts +++ b/kontor-angular/src/app/media/media-overview/media-overview.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ComicSectionComponent } from './comic-section.component'; +import { MediaOverviewComponent } from './media-overview.component'; -describe('ComicComponent', () => { - let component: ComicSectionComponent; - let fixture: ComponentFixture; +describe('MediaOverview', () => { + let component: MediaOverviewComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ComicSectionComponent] + imports: [MediaOverviewComponent] }) .compileComponents(); - fixture = TestBed.createComponent(ComicSectionComponent); + fixture = TestBed.createComponent(MediaOverviewComponent); component = fixture.componentInstance; fixture.detectChanges(); }); 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 new file mode 100644 index 0000000..ea7711b --- /dev/null +++ b/kontor-angular/src/app/media/media-overview/media-overview.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { RouterLink, RouterOutlet, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'kontor-media-overview', + imports: [RouterOutlet, RouterLink, RouterLinkActive], + templateUrl: './media-overview.component.html', + styleUrl: './media-overview.component.css' +}) +export class MediaOverviewComponent { + +} diff --git a/kontor-angular/src/app/kontor/comic/comics/comic/comic.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/kontor/comic/comics/comic/comic.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-video/media-video-list/media-video-list.component.spec.ts b/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts new file mode 100644 index 0000000..e18eb84 --- /dev/null +++ b/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MediaVideoListComponent } from './media-video-list.component'; + +describe('MediaVideoListComponent', () => { + let component: MediaVideoListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MediaVideoListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MediaVideoListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); 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/kontor/comic/comics/comics.component.css b/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.css similarity index 100% rename from kontor-angular/src/app/kontor/comic/comics/comics.component.css rename to kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.css 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/kontor/media/media-actors/media-actors.component.spec.ts b/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts similarity index 52% rename from kontor-angular/src/app/kontor/media/media-actors/media-actors.component.spec.ts rename to kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts index 1448ea4..c957e68 100644 --- a/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.spec.ts +++ b/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MediaActorsComponent } from './media-actors.component'; +import { CardsetListComponent } from './cardset-list.component'; -describe('MediaActorsComponent', () => { - let component: MediaActorsComponent; - let fixture: ComponentFixture; +describe('CardsetListComponent', () => { + let component: CardsetListComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MediaActorsComponent] + imports: [CardsetListComponent] }) .compileComponents(); - fixture = TestBed.createComponent(MediaActorsComponent); + fixture = TestBed.createComponent(CardsetListComponent); component = fixture.componentInstance; fixture.detectChanges(); }); 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/kontor/comic/publishers/publishers.component.css b/kontor-angular/src/app/tysc/player/player-list/player-list.component.css similarity index 100% rename from kontor-angular/src/app/kontor/comic/publishers/publishers.component.css rename to kontor-angular/src/app/tysc/player/player-list/player-list.component.css 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/kontor/home/kontor-home/kontor-home.component.css b/kontor-angular/src/app/tysc/position/position-list/position-list.component.css similarity index 100% rename from kontor-angular/src/app/kontor/home/kontor-home/kontor-home.component.css rename to kontor-angular/src/app/tysc/position/position-list/position-list.component.css 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/kontor/footer/kontor-footer/kontor-footer.component.spec.ts b/kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts similarity index 52% rename from kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.spec.ts rename to kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts index a957c42..9034de6 100644 --- a/kontor-angular/src/app/kontor/footer/kontor-footer/kontor-footer.component.spec.ts +++ b/kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { KontorFooterComponent } from './kontor-footer.component'; +import { PositionListComponent } from './position-list.component'; -describe('KontorFooterComponent', () => { - let component: KontorFooterComponent; - let fixture: ComponentFixture; +describe('PositionListComponent', () => { + let component: PositionListComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [KontorFooterComponent] + imports: [PositionListComponent] }) .compileComponents(); - fixture = TestBed.createComponent(KontorFooterComponent); + fixture = TestBed.createComponent(PositionListComponent); component = fixture.componentInstance; fixture.detectChanges(); }); 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/kontor/media/media-actors/media-actors.component.css b/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.css similarity index 100% rename from kontor-angular/src/app/kontor/media/media-actors/media-actors.component.css rename to kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.css 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/kontor/comic/comics/comic/comic.component.spec.ts b/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts similarity index 53% rename from kontor-angular/src/app/kontor/comic/comics/comic/comic.component.spec.ts rename to kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts index 7516987..7a1c646 100644 --- a/kontor-angular/src/app/kontor/comic/comics/comic/comic.component.spec.ts +++ b/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ComicComponent } from './comic.component'; +import { SportListComponent } from './sport-list.component'; -describe('ComicComponent', () => { - let component: ComicComponent; - let fixture: ComponentFixture; +describe('SportListComponent', () => { + let component: SportListComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ComicComponent] + imports: [SportListComponent] }) .compileComponents(); - fixture = TestBed.createComponent(ComicComponent); + fixture = TestBed.createComponent(SportListComponent); component = fixture.componentInstance; fixture.detectChanges(); }); 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/kontor/media/media-files/media-files.component.css b/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.css similarity index 100% rename from kontor-angular/src/app/kontor/media/media-files/media-files.component.css rename to kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.css 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/kontor/media/media-navigation/media-navigation.component.css b/kontor-angular/src/app/tysc/team/team-list/team-list.component.css similarity index 100% rename from kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.css rename to kontor-angular/src/app/tysc/team/team-list/team-list.component.css 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/kontor/comic/artists/artist/artist.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/kontor/comic/artists/artist/artist.component.spec.ts rename to kontor-angular/src/app/tysc/team/team-list/team-list.component.spec.ts index fe60ea6..b8a8711 100644 --- a/kontor-angular/src/app/kontor/comic/artists/artist/artist.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 { ArtistComponent } from './artist.component'; +import { TeamListComponent } from './team-list.component'; -describe('ArtistComponent', () => { - let component: ArtistComponent; - let fixture: ComponentFixture; +describe('TeamListComponent', () => { + let component: TeamListComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ArtistComponent] + imports: [TeamListComponent] }) .compileComponents(); - fixture = TestBed.createComponent(ArtistComponent); + 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/kontor/media/media-videos/media-videos.component.css b/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.css similarity index 100% rename from kontor-angular/src/app/kontor/media/media-videos/media-videos.component.css rename to kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.css 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/kontor/comic/artists/artists.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/kontor/comic/artists/artists.component.spec.ts rename to kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.spec.ts index be721bf..61baa16 100644 --- a/kontor-angular/src/app/kontor/comic/artists/artists.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 { ArtistsComponent } from './artists.component'; +import { TyscMenuComponent } from './tysc-menu.component'; -describe('ArtistsComponent', () => { - let component: ArtistsComponent; - let fixture: ComponentFixture; +describe('TyscMenuComponent', () => { + let component: TyscMenuComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ArtistsComponent] + imports: [TyscMenuComponent] }) .compileComponents(); - fixture = TestBed.createComponent(ArtistsComponent); + 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/kontor/media/media.component.css b/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.css similarity index 100% rename from kontor-angular/src/app/kontor/media/media.component.css rename to kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.css 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 { + +} -- 2.18.0 From eb8b28376933bb61e49c3ae61c4d4e35bf78ce9b Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Thu, 18 Sep 2025 22:33:58 +0200 Subject: [PATCH 03/20] setup header, navigation and footer of app --- kontor-angular/src/app/app.component.html | 1 + kontor-angular/src/app/app.component.ts | 3 ++- .../app/kontor/footer/footer.component.css | 9 +++++--- .../app/kontor/footer/footer.component.html | 4 ++-- .../src/app/kontor/footer/footer.component.ts | 1 - .../app/kontor/header/header.component.html | 14 ----------- .../navigation/navigation.component.css | 0 .../navigation/navigation.component.html | 6 +++++ .../navigation/navigation.component.spec.ts | 23 +++++++++++++++++++ .../kontor/navigation/navigation.component.ts | 12 ++++++++++ 10 files changed, 52 insertions(+), 21 deletions(-) create mode 100644 kontor-angular/src/app/kontor/navigation/navigation.component.css create mode 100644 kontor-angular/src/app/kontor/navigation/navigation.component.html create mode 100644 kontor-angular/src/app/kontor/navigation/navigation.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/navigation/navigation.component.ts diff --git a/kontor-angular/src/app/app.component.html b/kontor-angular/src/app/app.component.html index def9b90..604f43b 100644 --- a/kontor-angular/src/app/app.component.html +++ b/kontor-angular/src/app/app.component.html @@ -1,5 +1,6 @@
+
diff --git a/kontor-angular/src/app/app.component.ts b/kontor-angular/src/app/app.component.ts index f8f2137..d4b268e 100644 --- a/kontor-angular/src/app/app.component.ts +++ b/kontor-angular/src/app/app.component.ts @@ -2,10 +2,11 @@ import { Component } from '@angular/core'; import { RouterOutlet } from '@angular/router'; import { KontorHeaderComponent } from "./kontor/header/header.component"; import { KontorFooterComponent } from './kontor/footer/footer.component'; +import { NavigationComponent } from "./kontor/navigation/navigation.component"; @Component({ selector: 'app-root', - imports: [RouterOutlet, KontorHeaderComponent, KontorFooterComponent], + imports: [RouterOutlet, KontorHeaderComponent, KontorFooterComponent, NavigationComponent], templateUrl: './app.component.html', styleUrl: './app.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 1d66ed7..2b55a97 100644 --- a/kontor-angular/src/app/kontor/footer/footer.component.css +++ b/kontor-angular/src/app/kontor/footer/footer.component.css @@ -1,7 +1,10 @@ /* Footer */ -a { +.footer { padding: 20px; text-align: center; - background: #ddd; - margin-top: 20px; + background-color: lightblue; +} + +.footer a { + font-size: 20px; } diff --git a/kontor-angular/src/app/kontor/footer/footer.component.html b/kontor-angular/src/app/kontor/footer/footer.component.html index 1f376c3..1e7ad38 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 @@ - + \ No newline at end of file diff --git a/kontor-angular/src/app/kontor/footer/footer.component.ts b/kontor-angular/src/app/kontor/footer/footer.component.ts index 8262425..7ded191 100644 --- a/kontor-angular/src/app/kontor/footer/footer.component.ts +++ b/kontor-angular/src/app/kontor/footer/footer.component.ts @@ -9,5 +9,4 @@ import { Component } from '@angular/core'; export class KontorFooterComponent { footerUrl = "https://kontor.thpeetz.de"; footerLink = "kontor.thpeetz.de"; - } diff --git a/kontor-angular/src/app/kontor/header/header.component.html b/kontor-angular/src/app/kontor/header/header.component.html index 9c1f7a2..3191f24 100644 --- a/kontor-angular/src/app/kontor/header/header.component.html +++ b/kontor-angular/src/app/kontor/header/header.component.html @@ -2,18 +2,4 @@

{{ title() }}

- - diff --git a/kontor-angular/src/app/kontor/navigation/navigation.component.css b/kontor-angular/src/app/kontor/navigation/navigation.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/navigation/navigation.component.html b/kontor-angular/src/app/kontor/navigation/navigation.component.html new file mode 100644 index 0000000..f7c8699 --- /dev/null +++ b/kontor-angular/src/app/kontor/navigation/navigation.component.html @@ -0,0 +1,6 @@ + diff --git a/kontor-angular/src/app/kontor/navigation/navigation.component.spec.ts b/kontor-angular/src/app/kontor/navigation/navigation.component.spec.ts new file mode 100644 index 0000000..a161d31 --- /dev/null +++ b/kontor-angular/src/app/kontor/navigation/navigation.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NavigationComponent } from './navigation.component'; + +describe('NavigationComponent', () => { + let component: NavigationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [NavigationComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(NavigationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/navigation/navigation.component.ts b/kontor-angular/src/app/kontor/navigation/navigation.component.ts new file mode 100644 index 0000000..c5feb48 --- /dev/null +++ b/kontor-angular/src/app/kontor/navigation/navigation.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-navigation', + imports: [RouterLink, RouterLinkActive], + templateUrl: './navigation.component.html', + styleUrl: './navigation.component.css' +}) +export class NavigationComponent { + +} -- 2.18.0 From a0d2bef4ef9f8bbb9f35bb3e6985d02ba2acaa06 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Thu, 18 Sep 2025 22:46:23 +0200 Subject: [PATCH 04/20] add routes for Comic section --- kontor-angular/src/app/app.routes.ts | 15 ++++-------- .../comic-navigation.component.css | 0 .../comic-navigation.component.html | 5 ++++ .../comic-navigation.component.spec.ts | 23 +++++++++++++++++++ .../comic-navigation.component.ts | 12 ++++++++++ .../comic-section/comic-section.component.css | 0 .../comic-section.component.html | 2 ++ .../comic-section.component.spec.ts | 23 +++++++++++++++++++ .../comic-section/comic-section.component.ts | 13 +++++++++++ .../comic-section/comic-section.routes.ts | 19 +++++++++++++++ 10 files changed, 101 insertions(+), 11 deletions(-) create mode 100644 kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.css create mode 100644 kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.html create mode 100644 kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.css create mode 100644 kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.html create mode 100644 kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts diff --git a/kontor-angular/src/app/app.routes.ts b/kontor-angular/src/app/app.routes.ts index 7740668..add9c24 100644 --- a/kontor-angular/src/app/app.routes.ts +++ b/kontor-angular/src/app/app.routes.ts @@ -1,14 +1,10 @@ import { Routes } from '@angular/router'; import { KontorComponent } from './kontor/kontor.component'; import { Login } from './common/login/login'; -import { ComicOverviewComponent } from './comic/comic-overview/comic-overview.component'; import { MediaOverviewComponent } from './media/media-overview/media-overview.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'; @@ -16,18 +12,15 @@ import { CardsetListComponent } from './tysc/cardset/cardset-list/cardset-list.c 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'; +import { ComicSectionComponent } from './kontor/comic/comic-section/comic-section.component'; +import { comicRoutes } from './kontor/comic/comic-section/comic-section.routes'; export const routes: Routes = [ { path: '', component: KontorComponent, }, { path: 'login', component: Login, }, { - path: 'comic', component: ComicOverviewComponent, - children: [ - { path: '', component: ComicListComponent}, - { path: 'comics', component: ComicListComponent}, - { path: 'publisher', component: PublisherListComponent}, - { path: 'artist', component: ArtistListComponent}, - ], + path: 'comic', component: ComicSectionComponent, + children: comicRoutes, }, { path: 'tysc', component: TyscMenuComponent, diff --git a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.css b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.html b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.html new file mode 100644 index 0000000..87b4fd0 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.html @@ -0,0 +1,5 @@ + diff --git a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.spec.ts new file mode 100644 index 0000000..faab5bb --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComicNavigationComponent } from './comic-navigation.component'; + +describe('ComicNavigationComponent', () => { + let component: ComicNavigationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ComicNavigationComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ComicNavigationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.ts b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.ts new file mode 100644 index 0000000..62dce29 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-navigation/comic-navigation.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-comic-navigation', + imports: [RouterLink, RouterLinkActive], + templateUrl: './comic-navigation.component.html', + styleUrl: './comic-navigation.component.css' +}) +export class ComicNavigationComponent { + +} diff --git a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.css b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.html b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.html new file mode 100644 index 0000000..570e4d6 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.html @@ -0,0 +1,2 @@ + + diff --git a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.spec.ts new file mode 100644 index 0000000..9acbb1a --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComicSectionComponent } from './comic-section.component'; + +describe('ComicSectionComponent', () => { + let component: ComicSectionComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ComicSectionComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ComicSectionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.ts b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.ts new file mode 100644 index 0000000..76c2cef --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { ComicNavigationComponent } from "../comic-navigation/comic-navigation.component"; +import { RouterOutlet } from '@angular/router'; + +@Component({ + selector: 'app-comic-section', + imports: [ComicNavigationComponent, RouterOutlet], + templateUrl: './comic-section.component.html', + styleUrl: './comic-section.component.css' +}) +export class ComicSectionComponent { + +} diff --git a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts new file mode 100644 index 0000000..940a22b --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts @@ -0,0 +1,19 @@ +import { Routes } from "@angular/router"; +import { ComicListComponent } from "../../../comic/comic/comic-list/comic-list.component"; +import { PublisherListComponent } from "../../../comic/publisher/publisher-list/publisher-list.component"; +import { ArtistListComponent } from "../../../comic/artist/artist-list/artist-list.component"; + +export const comicRoutes: Routes = [ + { + path: 'comics', + component: ComicListComponent + }, + { + path: 'publisher', + component: PublisherListComponent + }, + { + path: 'artist', + component: ArtistListComponent + }, +]; -- 2.18.0 From f933312283f57fe8fa35a79d850b5dbf022c3f97 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Thu, 18 Sep 2025 22:58:19 +0200 Subject: [PATCH 05/20] add routes for TYSC section --- kontor-angular/src/app/app.routes.ts | 20 +++---------- .../comic-overview.component.html | 16 ---------- .../comic-overview.component.ts | 12 -------- .../src/app/kontor/header/header.component.ts | 3 +- .../tysc-navigation.component.css} | 0 .../tysc-navigation.component.html | 7 +++++ .../tysc-navigation.component.spec.ts | 23 +++++++++++++++ .../tysc-navigation.component.ts | 12 ++++++++ .../tysc-section/tysc-section.component.css | 0 .../tysc-section/tysc-section.component.html | 2 ++ .../tysc-section.component.spec.ts} | 12 ++++---- .../tysc-section/tysc-section.component.ts | 13 +++++++++ .../tysc/tysc-section/tysc-section.routes.ts | 29 +++++++++++++++++++ 13 files changed, 97 insertions(+), 52 deletions(-) delete mode 100644 kontor-angular/src/app/comic/comic-overview/comic-overview.component.html delete mode 100644 kontor-angular/src/app/comic/comic-overview/comic-overview.component.ts rename kontor-angular/src/app/{comic/comic-overview/comic-overview.component.css => kontor/tysc/tysc-navigation/tysc-navigation.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.html create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.ts create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.css create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.html rename kontor-angular/src/app/{comic/comic-overview/comic-overview.component.spec.ts => kontor/tysc/tysc-section/tysc-section.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.ts create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.routes.ts diff --git a/kontor-angular/src/app/app.routes.ts b/kontor-angular/src/app/app.routes.ts index add9c24..3a8a612 100644 --- a/kontor-angular/src/app/app.routes.ts +++ b/kontor-angular/src/app/app.routes.ts @@ -5,15 +5,10 @@ import { MediaOverviewComponent } from './media/media-overview/media-overview.co 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 { 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'; import { ComicSectionComponent } from './kontor/comic/comic-section/comic-section.component'; import { comicRoutes } from './kontor/comic/comic-section/comic-section.routes'; +import { tyscRoutes } from './kontor/tysc/tysc-section/tysc-section.routes'; +import { TyscSectionComponent } from './kontor/tysc/tysc-section/tysc-section.component'; export const routes: Routes = [ { path: '', component: KontorComponent, }, @@ -23,15 +18,8 @@ export const routes: Routes = [ children: comicRoutes, }, { - 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: 'tysc', component: TyscSectionComponent, + children: tyscRoutes, }, { path: 'media', component: MediaOverviewComponent, 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 deleted file mode 100644 index 54c8b3c..0000000 --- a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.html +++ /dev/null @@ -1,16 +0,0 @@ - - - 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 deleted file mode 100644 index 32c15f4..0000000 --- a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component } from '@angular/core'; -import { RouterLink, RouterOutlet, RouterLinkActive } from '@angular/router'; - -@Component({ - selector: 'app-comic-overview', - imports: [RouterLink, RouterOutlet, RouterLinkActive], - templateUrl: './comic-overview.component.html', - styleUrl: './comic-overview.component.css' -}) -export class ComicOverviewComponent { - -} diff --git a/kontor-angular/src/app/kontor/header/header.component.ts b/kontor-angular/src/app/kontor/header/header.component.ts index 8808cc8..3b8a262 100644 --- a/kontor-angular/src/app/kontor/header/header.component.ts +++ b/kontor-angular/src/app/kontor/header/header.component.ts @@ -1,9 +1,8 @@ import { Component, signal } from '@angular/core'; -import { RouterLink, RouterLinkActive } from '@angular/router'; @Component({ selector: 'kontor-header', - imports: [RouterLink, RouterLinkActive], + imports: [], templateUrl: './header.component.html', styleUrl: './header.component.css' }) diff --git a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.css b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.css similarity index 100% rename from kontor-angular/src/app/comic/comic-overview/comic-overview.component.css rename to kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.css diff --git a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.html b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.html new file mode 100644 index 0000000..1baa47f --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.html @@ -0,0 +1,7 @@ + diff --git a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.spec.ts new file mode 100644 index 0000000..363a185 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TyscNavigationComponent } from './tysc-navigation.component'; + +describe('TyscNavigationComponent', () => { + let component: TyscNavigationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [TyscNavigationComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(TyscNavigationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.ts new file mode 100644 index 0000000..0a8cc16 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-navigation/tysc-navigation.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-tysc-navigation', + imports: [RouterLink, RouterLinkActive], + templateUrl: './tysc-navigation.component.html', + styleUrl: './tysc-navigation.component.css' +}) +export class TyscNavigationComponent { + +} diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.css b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.html b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.html new file mode 100644 index 0000000..7acac9b --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.html @@ -0,0 +1,2 @@ + + diff --git a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.spec.ts similarity index 52% rename from kontor-angular/src/app/comic/comic-overview/comic-overview.component.spec.ts rename to kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.spec.ts index a61f624..c8c34ec 100644 --- a/kontor-angular/src/app/comic/comic-overview/comic-overview.component.spec.ts +++ b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ComicOverview } from './comic-overview.component'; +import { TyscSectionComponent } from './tysc-section.component'; -describe('ComicOverview', () => { - let component: ComicOverview; - let fixture: ComponentFixture; +describe('TyscSectionComponent', () => { + let component: TyscSectionComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ComicOverview] + imports: [TyscSectionComponent] }) .compileComponents(); - fixture = TestBed.createComponent(ComicOverview); + fixture = TestBed.createComponent(TyscSectionComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.ts new file mode 100644 index 0000000..9128136 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { TyscNavigationComponent } from "../tysc-navigation/tysc-navigation.component"; +import { RouterOutlet } from '@angular/router'; + +@Component({ + selector: 'app-tysc-section', + imports: [TyscNavigationComponent, RouterOutlet], + templateUrl: './tysc-section.component.html', + styleUrl: './tysc-section.component.css' +}) +export class TyscSectionComponent { + +} diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.routes.ts b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.routes.ts new file mode 100644 index 0000000..87f2079 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.routes.ts @@ -0,0 +1,29 @@ +import { Routes } from "@angular/router"; +import { TeamListComponent } from "../../../tysc/team/team-list/team-list.component"; +import { PlayerListComponent } from "../../../tysc/player/player-list/player-list.component"; +import { PositionListComponent } from "../../../tysc/position/position-list/position-list.component"; +import { CardsetListComponent } from "../../../tysc/cardset/cardset-list/cardset-list.component"; +import { VendorListComponent } from "../../../tysc/vendor/vendor-list/vendor-list.component"; + +export const tyscRoutes: Routes = [ + { + path: 'team', + component: TeamListComponent + }, + { + path: 'player', + component: PlayerListComponent + }, + { + path: 'position', + component: PositionListComponent + }, + { + path: 'cardset', + component: CardsetListComponent + }, + { + path: 'vendor', + component: VendorListComponent + }, +]; -- 2.18.0 From 0cc2561327bd8f91c50070bfe8ec4aad144f58f7 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Thu, 18 Sep 2025 23:07:41 +0200 Subject: [PATCH 06/20] add routes for Media section --- kontor-angular/src/app/app.routes.ts | 17 +++++------------ .../media-navigation.component.css} | 0 .../media-navigation.component.html | 5 +++++ .../media-navigation.component.spec.ts} | 12 ++++++------ .../media-navigation.component.ts | 12 ++++++++++++ .../media-section.component.css} | 0 .../media-section.component.html | 2 ++ .../media-section.component.spec.ts} | 12 ++++++------ .../media-section/media-section.component.ts | 13 +++++++++++++ .../media-section/media-section.routes.ts | 19 +++++++++++++++++++ .../media-overview.component.html | 16 ---------------- .../media-overview.component.ts | 12 ------------ .../tysc/tysc-menu/tysc-menu.component.html | 8 -------- .../app/tysc/tysc-menu/tysc-menu.component.ts | 12 ------------ 14 files changed, 68 insertions(+), 72 deletions(-) rename kontor-angular/src/app/{media/media-overview/media-overview.component.css => kontor/media/media-navigation/media-navigation.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html rename kontor-angular/src/app/{media/media-overview/media-overview.component.spec.ts => kontor/media/media-navigation/media-navigation.component.spec.ts} (50%) create mode 100644 kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.ts rename kontor-angular/src/app/{tysc/tysc-menu/tysc-menu.component.css => kontor/media/media-section/media-section.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/media/media-section/media-section.component.html rename kontor-angular/src/app/{tysc/tysc-menu/tysc-menu.component.spec.ts => kontor/media/media-section/media-section.component.spec.ts} (51%) create mode 100644 kontor-angular/src/app/kontor/media/media-section/media-section.component.ts create mode 100644 kontor-angular/src/app/kontor/media/media-section/media-section.routes.ts delete mode 100644 kontor-angular/src/app/media/media-overview/media-overview.component.html delete mode 100644 kontor-angular/src/app/media/media-overview/media-overview.component.ts delete mode 100644 kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.html delete mode 100644 kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.ts diff --git a/kontor-angular/src/app/app.routes.ts b/kontor-angular/src/app/app.routes.ts index 3a8a612..07d6491 100644 --- a/kontor-angular/src/app/app.routes.ts +++ b/kontor-angular/src/app/app.routes.ts @@ -1,14 +1,12 @@ import { Routes } from '@angular/router'; import { KontorComponent } from './kontor/kontor.component'; import { Login } from './common/login/login'; -import { MediaOverviewComponent } from './media/media-overview/media-overview.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 { ComicSectionComponent } from './kontor/comic/comic-section/comic-section.component'; import { comicRoutes } from './kontor/comic/comic-section/comic-section.routes'; -import { tyscRoutes } from './kontor/tysc/tysc-section/tysc-section.routes'; import { TyscSectionComponent } from './kontor/tysc/tysc-section/tysc-section.component'; +import { tyscRoutes } from './kontor/tysc/tysc-section/tysc-section.routes'; +import { MediaSectionComponent } from './kontor/media/media-section/media-section.component'; +import { mediaRoutes } from './kontor/media/media-section/media-section.routes'; export const routes: Routes = [ { path: '', component: KontorComponent, }, @@ -22,12 +20,7 @@ export const routes: Routes = [ children: tyscRoutes, }, { - path: 'media', component: MediaOverviewComponent, - children: [ - { path: '', component: MediaFileListComponent}, - { path: 'mediafiles', component: MediaFileListComponent}, - { path: 'mediaactors', component: MediaActorListComponent}, - { path: 'mediavideos', component: MediaVideoListComponent}, - ], + path: 'media', component: MediaSectionComponent, + children: mediaRoutes, }, ]; diff --git a/kontor-angular/src/app/media/media-overview/media-overview.component.css b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.css similarity index 100% rename from kontor-angular/src/app/media/media-overview/media-overview.component.css rename to kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.css diff --git a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html new file mode 100644 index 0000000..cd3857f --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html @@ -0,0 +1,5 @@ + diff --git a/kontor-angular/src/app/media/media-overview/media-overview.component.spec.ts b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.spec.ts similarity index 50% rename from kontor-angular/src/app/media/media-overview/media-overview.component.spec.ts rename to kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.spec.ts index ccaf8b5..e1c7fdf 100644 --- a/kontor-angular/src/app/media/media-overview/media-overview.component.spec.ts +++ b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MediaOverviewComponent } from './media-overview.component'; +import { MediaNavigationComponent } from './media-navigation.component'; -describe('MediaOverview', () => { - let component: MediaOverviewComponent; - let fixture: ComponentFixture; +describe('MediaNavigationComponent', () => { + let component: MediaNavigationComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MediaOverviewComponent] + imports: [MediaNavigationComponent] }) .compileComponents(); - fixture = TestBed.createComponent(MediaOverviewComponent); + fixture = TestBed.createComponent(MediaNavigationComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.ts b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.ts new file mode 100644 index 0000000..673afd9 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-media-navigation', + imports: [RouterLink, RouterLinkActive], + templateUrl: './media-navigation.component.html', + styleUrl: './media-navigation.component.css' +}) +export class MediaNavigationComponent { + +} diff --git a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.css b/kontor-angular/src/app/kontor/media/media-section/media-section.component.css similarity index 100% rename from kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.css rename to kontor-angular/src/app/kontor/media/media-section/media-section.component.css diff --git a/kontor-angular/src/app/kontor/media/media-section/media-section.component.html b/kontor-angular/src/app/kontor/media/media-section/media-section.component.html new file mode 100644 index 0000000..d31e086 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-section/media-section.component.html @@ -0,0 +1,2 @@ + + diff --git a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.spec.ts b/kontor-angular/src/app/kontor/media/media-section/media-section.component.spec.ts similarity index 51% rename from kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.spec.ts rename to kontor-angular/src/app/kontor/media/media-section/media-section.component.spec.ts index 61baa16..fa766d5 100644 --- a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.spec.ts +++ b/kontor-angular/src/app/kontor/media/media-section/media-section.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { TyscMenuComponent } from './tysc-menu.component'; +import { MediaSectionComponent } from './media-section.component'; -describe('TyscMenuComponent', () => { - let component: TyscMenuComponent; - let fixture: ComponentFixture; +describe('MediaSectionComponent', () => { + let component: MediaSectionComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [TyscMenuComponent] + imports: [MediaSectionComponent] }) .compileComponents(); - fixture = TestBed.createComponent(TyscMenuComponent); + fixture = TestBed.createComponent(MediaSectionComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/media/media-section/media-section.component.ts b/kontor-angular/src/app/kontor/media/media-section/media-section.component.ts new file mode 100644 index 0000000..a4c17d3 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-section/media-section.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { MediaNavigationComponent } from "../media-navigation/media-navigation.component"; +import { RouterOutlet } from '@angular/router'; + +@Component({ + selector: 'app-media-section', + imports: [MediaNavigationComponent, RouterOutlet], + templateUrl: './media-section.component.html', + styleUrl: './media-section.component.css' +}) +export class MediaSectionComponent { + +} diff --git a/kontor-angular/src/app/kontor/media/media-section/media-section.routes.ts b/kontor-angular/src/app/kontor/media/media-section/media-section.routes.ts new file mode 100644 index 0000000..fbd256c --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-section/media-section.routes.ts @@ -0,0 +1,19 @@ +import { Routes } from "@angular/router"; +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"; + +export const mediaRoutes: Routes = [ + { + path: 'mediafiles', + component: MediaFileListComponent + }, + { + path: 'mediaactors', + component: MediaActorListComponent + }, + { + path: 'mediavideos', + component: MediaVideoListComponent + }, +]; \ No newline at end of file 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 deleted file mode 100644 index 4a72d42..0000000 --- a/kontor-angular/src/app/media/media-overview/media-overview.component.html +++ /dev/null @@ -1,16 +0,0 @@ - - - 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 deleted file mode 100644 index ea7711b..0000000 --- a/kontor-angular/src/app/media/media-overview/media-overview.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component } from '@angular/core'; -import { RouterLink, RouterOutlet, RouterLinkActive } from '@angular/router'; - -@Component({ - selector: 'kontor-media-overview', - imports: [RouterOutlet, RouterLink, RouterLinkActive], - templateUrl: './media-overview.component.html', - styleUrl: './media-overview.component.css' -}) -export class MediaOverviewComponent { - -} 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 deleted file mode 100644 index 7f5e8d2..0000000 --- a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.html +++ /dev/null @@ -1,8 +0,0 @@ - - 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 deleted file mode 100644 index 12710f8..0000000 --- a/kontor-angular/src/app/tysc/tysc-menu/tysc-menu.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -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 { - -} -- 2.18.0 From b5425c62deb60e369bb01253734df35b607bd5a9 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Thu, 18 Sep 2025 23:40:09 +0200 Subject: [PATCH 07/20] add links for artists --- .../artist-detail.component.html | 5 ---- .../artist-detail/artist-detail.component.ts | 14 ----------- .../comic-artist/comic-artist.component.css} | 0 .../comic-artist/comic-artist.component.html | 5 ++++ .../comic-artist.component.spec.ts} | 12 +++++----- .../comic-artist/comic-artist.component.ts | 13 +++++++++++ .../comic-artists-list.component.css} | 0 .../comic-artists-list.component.html} | 2 +- .../comic-artists-list.component.spec.ts | 23 +++++++++++++++++++ .../comic-artists-list.component.ts} | 21 +++++++++-------- .../comic/comic-artists}/artist.model.ts | 0 .../comic/comic-artists}/artist.service.ts | 4 ++-- .../comic-artists/comic-artists.component.css | 0 .../comic-artists.component.html | 7 ++++++ .../comic-artists.component.spec.ts} | 12 +++++----- .../comic-artists/comic-artists.component.ts | 12 ++++++++++ .../comic-section/comic-section.routes.ts | 16 +++++++++++-- 17 files changed, 100 insertions(+), 46 deletions(-) delete mode 100644 kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.html delete mode 100644 kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.ts rename kontor-angular/src/app/{comic/artist/artist-detail/artist-detail.component.css => kontor/comic/comic-artist/comic-artist.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.html rename kontor-angular/src/app/{comic/artist/artist-list/artist-list.component.spec.ts => kontor/comic/comic-artist/comic-artist.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.ts rename kontor-angular/src/app/{comic/artist/artist-list/artist-list.component.css => kontor/comic/comic-artists-list/comic-artists-list.component.css} (100%) rename kontor-angular/src/app/{comic/artist/artist-list/artist-list.component.html => kontor/comic/comic-artists-list/comic-artists-list.component.html} (64%) create mode 100644 kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.spec.ts rename kontor-angular/src/app/{comic/artist/artist-list/artist-list.component.ts => kontor/comic/comic-artists-list/comic-artists-list.component.ts} (55%) rename kontor-angular/src/app/{comic/artist => kontor/comic/comic-artists}/artist.model.ts (100%) rename kontor-angular/src/app/{comic/artist => kontor/comic/comic-artists}/artist.service.ts (93%) create mode 100644 kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css create mode 100644 kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html rename kontor-angular/src/app/{comic/artist/artist-detail/artist-detail.component.spec.ts => kontor/comic/comic-artists/comic-artists.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.ts diff --git a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.html b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.html deleted file mode 100644 index 8c949f3..0000000 --- a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.ts b/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.ts deleted file mode 100644 index 5bf9f95..0000000 --- a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Component, input, signal } from '@angular/core'; -import { Artist } from '../artist.model'; -import { RouterLink, RouterLinkActive } from '@angular/router'; - -@Component({ - selector: 'app-artist-detail', - imports: [RouterLink, RouterLinkActive], - templateUrl: './artist-detail.component.html', - styleUrl: './artist-detail.component.css' -}) -export class ArtistDetailComponent { - artist = input.required(); - -} diff --git a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.css b/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.css similarity index 100% rename from kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.css rename to kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.css diff --git a/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.html b/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.html new file mode 100644 index 0000000..b702b13 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.html @@ -0,0 +1,5 @@ + diff --git a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.spec.ts similarity index 52% rename from kontor-angular/src/app/comic/artist/artist-list/artist-list.component.spec.ts rename to kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.spec.ts index 4a58cbb..19737d5 100644 --- a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ArtistListComponent } from './artist-list.component'; +import { ComicArtistComponent } from './comic-artist.component'; -describe('ArtistListComponent', () => { - let component: ArtistListComponent; - let fixture: ComponentFixture; +describe('ComicArtistComponent', () => { + let component: ComicArtistComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ArtistListComponent] + imports: [ComicArtistComponent] }) .compileComponents(); - fixture = TestBed.createComponent(ArtistListComponent); + fixture = TestBed.createComponent(ComicArtistComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.ts b/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.ts new file mode 100644 index 0000000..b24e6de --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.ts @@ -0,0 +1,13 @@ +import { Component, input } from '@angular/core'; +import { Artist } from '../comic-artists/artist.model'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-comic-artist', + imports: [RouterLink, RouterLinkActive], + templateUrl: './comic-artist.component.html', + styleUrl: './comic-artist.component.css' +}) +export class ComicArtistComponent { + artist = input.required(); +} diff --git a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.css b/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.css similarity index 100% rename from kontor-angular/src/app/comic/artist/artist-list/artist-list.component.css rename to kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.css diff --git a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.html b/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.html similarity index 64% rename from kontor-angular/src/app/comic/artist/artist-list/artist-list.component.html rename to kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.html index 984357c..1bbc4f3 100644 --- a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.html @@ -1,7 +1,7 @@
    @for (artist of artists(); track artist.id) {
  • - +
  • }
diff --git a/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.spec.ts new file mode 100644 index 0000000..dd0c4d3 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComicArtistsListComponent } from './comic-artists-list.component'; + +describe('ComicArtistsListComponent', () => { + let component: ComicArtistsListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ComicArtistsListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ComicArtistsListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.ts b/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.ts similarity index 55% rename from kontor-angular/src/app/comic/artist/artist-list/artist-list.component.ts rename to kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.ts index 441b24a..f1972da 100644 --- a/kontor-angular/src/app/comic/artist/artist-list/artist-list.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.ts @@ -1,16 +1,18 @@ import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; -import { Artist } from '../artist.model'; -import { ArtistService } from '../artist.service'; -import { ArtistDetailComponent } from "../artist-detail/artist-detail.component"; +import { RouterLink, RouterLinkActive } from '@angular/router'; +import { Artist } from '../comic-artists/artist.model'; +import { ComicArtistComponent } from '../comic-artist/comic-artist.component'; +import { ArtistService } from '../comic-artists/artist.service'; @Component({ - selector: 'app-artist-list', - imports: [ArtistDetailComponent], - templateUrl: './artist-list.component.html', - styleUrl: './artist-list.component.css' + selector: 'app-comic-artists-list', + imports: [ComicArtistComponent], + templateUrl: './comic-artists-list.component.html', + styleUrl: './comic-artists-list.component.css' }) -export class ArtistListComponent implements OnInit { - artists = signal(undefined); +export class ComicArtistsListComponent implements OnInit { + + artists = signal([]); isFetching = signal(false); error = signal(''); private artistService = inject(ArtistService); @@ -34,5 +36,4 @@ export class ArtistListComponent implements OnInit { subscription.unsubscribe(); }); } - } diff --git a/kontor-angular/src/app/comic/artist/artist.model.ts b/kontor-angular/src/app/kontor/comic/comic-artists/artist.model.ts similarity index 100% rename from kontor-angular/src/app/comic/artist/artist.model.ts rename to kontor-angular/src/app/kontor/comic/comic-artists/artist.model.ts diff --git a/kontor-angular/src/app/comic/artist/artist.service.ts b/kontor-angular/src/app/kontor/comic/comic-artists/artist.service.ts similarity index 93% rename from kontor-angular/src/app/comic/artist/artist.service.ts rename to kontor-angular/src/app/kontor/comic/comic-artists/artist.service.ts index 6852eba..7b29420 100644 --- a/kontor-angular/src/app/comic/artist/artist.service.ts +++ b/kontor-angular/src/app/kontor/comic/comic-artists/artist.service.ts @@ -1,8 +1,8 @@ import { inject, Injectable, signal } from "@angular/core"; -import { ErrorService } from "../../shared/error.service"; import { HttpClient } from "@angular/common/http"; -import { Artist } from "./artist.model"; import { catchError, map, throwError } from "rxjs"; +import { ErrorService } from "../../../shared/error.service"; +import { Artist } from "./artist.model"; @Injectable({ providedIn: 'root', diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html new file mode 100644 index 0000000..a083862 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html @@ -0,0 +1,7 @@ +

artists works!

+
+ +
+
+

Artist Details

+
diff --git a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.spec.ts similarity index 52% rename from kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.spec.ts rename to kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.spec.ts index cf1fa88..99f3089 100644 --- a/kontor-angular/src/app/comic/artist/artist-detail/artist-detail.component.spec.ts +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ArtistDetailComponent } from './artist-detail.component'; +import { ComicArtistsComponent } from './comic-artists.component'; -describe('ArtistDetailComponent', () => { - let component: ArtistDetailComponent; - let fixture: ComponentFixture; +describe('ComicArtistsComponent', () => { + let component: ComicArtistsComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ArtistDetailComponent] + imports: [ComicArtistsComponent] }) .compileComponents(); - fixture = TestBed.createComponent(ArtistDetailComponent); + fixture = TestBed.createComponent(ComicArtistsComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.ts b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.ts new file mode 100644 index 0000000..d5e70a2 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { ComicArtistsListComponent } from '../comic-artists-list/comic-artists-list.component'; + +@Component({ + selector: 'app-comic-artists', + imports: [ComicArtistsListComponent], + templateUrl: './comic-artists.component.html', + styleUrl: './comic-artists.component.css' +}) +export class ComicArtistsComponent { + +} diff --git a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts index 940a22b..c8e8867 100644 --- a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts +++ b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts @@ -1,19 +1,31 @@ import { Routes } from "@angular/router"; import { ComicListComponent } from "../../../comic/comic/comic-list/comic-list.component"; import { PublisherListComponent } from "../../../comic/publisher/publisher-list/publisher-list.component"; -import { ArtistListComponent } from "../../../comic/artist/artist-list/artist-list.component"; +import { ComicArtistsComponent } from "../comic-artists/comic-artists.component"; export const comicRoutes: Routes = [ { path: 'comics', component: ComicListComponent }, + // { + // path: 'comics/:comicId', + // component: ComicDetailsComponent, + // }, { path: 'publisher', component: PublisherListComponent }, + // { + // path: 'publishers/:publisherId', + // component: PublishersComponent, + // }, { path: 'artist', - component: ArtistListComponent + component: ComicArtistsComponent }, + { + path: 'artist/:artistId', + component: ComicArtistsComponent, + }, ]; -- 2.18.0 From a5b1d771a0dadb6fa08bc458b428bd2ee4b9ee09 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Thu, 18 Sep 2025 23:49:39 +0200 Subject: [PATCH 08/20] add links for comics and publishers --- .../comic/comic/comic-list/comic-list.component.html | 1 - .../comic/comic/comic-list/comic-list.component.ts | 11 ----------- .../publisher-list/publisher-list.component.html | 1 - .../publisher-list/publisher-list.component.ts | 11 ----------- .../comic/comic-comics/comic-comics.component.css} | 0 .../comic/comic-comics/comic-comics.component.html | 1 + .../comic-comics/comic-comics.component.spec.ts} | 12 ++++++------ .../comic/comic-comics/comic-comics.component.ts | 11 +++++++++++ .../comic-publishers/comic-publishers.component.css} | 0 .../comic-publishers/comic-publishers.component.html | 1 + .../comic-publishers.component.spec.ts} | 12 ++++++------ .../comic-publishers/comic-publishers.component.ts | 11 +++++++++++ .../comic/comic-section/comic-section.routes.ts | 8 ++++---- 13 files changed, 40 insertions(+), 40 deletions(-) delete mode 100644 kontor-angular/src/app/comic/comic/comic-list/comic-list.component.html delete mode 100644 kontor-angular/src/app/comic/comic/comic-list/comic-list.component.ts delete mode 100644 kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.html delete mode 100644 kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.ts rename kontor-angular/src/app/{comic/comic/comic-list/comic-list.component.css => kontor/comic/comic-comics/comic-comics.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.html rename kontor-angular/src/app/{comic/comic/comic-list/comic-list.component.spec.ts => kontor/comic/comic-comics/comic-comics.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts rename kontor-angular/src/app/{comic/publisher/publisher-list/publisher-list.component.css => kontor/comic/comic-publishers/comic-publishers.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.html rename kontor-angular/src/app/{comic/publisher/publisher-list/publisher-list.component.spec.ts => kontor/comic/comic-publishers/comic-publishers.component.spec.ts} (50%) create mode 100644 kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.ts 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 deleted file mode 100644 index 5beb054..0000000 --- a/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

comic-list works!

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 deleted file mode 100644 index a09eb12..0000000 --- a/kontor-angular/src/app/comic/comic/comic-list/comic-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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/publisher/publisher-list/publisher-list.component.html b/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.html deleted file mode 100644 index d533325..0000000 --- a/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

publisher-list works!

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

comic-comics works!

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

comic-publishers works!

diff --git a/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.spec.ts similarity index 50% rename from kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.spec.ts rename to kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.spec.ts index 00f7266..184f6e7 100644 --- a/kontor-angular/src/app/comic/publisher/publisher-list/publisher-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { PublisherListComponent } from './publisher-list.component'; +import { ComicPublishersComponent } from './comic-publishers.component'; -describe('PublisherListComponent', () => { - let component: PublisherListComponent; - let fixture: ComponentFixture; +describe('ComicPublishersComponent', () => { + let component: ComicPublishersComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [PublisherListComponent] + imports: [ComicPublishersComponent] }) .compileComponents(); - fixture = TestBed.createComponent(PublisherListComponent); + fixture = TestBed.createComponent(ComicPublishersComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.ts b/kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.ts new file mode 100644 index 0000000..2b01fcc --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-comic-publishers', + imports: [], + templateUrl: './comic-publishers.component.html', + styleUrl: './comic-publishers.component.css' +}) +export class ComicPublishersComponent { + +} diff --git a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts index c8e8867..f6048bd 100644 --- a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts +++ b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts @@ -1,12 +1,12 @@ import { Routes } from "@angular/router"; -import { ComicListComponent } from "../../../comic/comic/comic-list/comic-list.component"; -import { PublisherListComponent } from "../../../comic/publisher/publisher-list/publisher-list.component"; import { ComicArtistsComponent } from "../comic-artists/comic-artists.component"; +import { ComicPublishersComponent } from './../comic-publishers/comic-publishers.component'; +import { ComicComicsComponent } from "../comic-comics/comic-comics.component"; export const comicRoutes: Routes = [ { path: 'comics', - component: ComicListComponent + component: ComicComicsComponent }, // { // path: 'comics/:comicId', @@ -14,7 +14,7 @@ export const comicRoutes: Routes = [ // }, { path: 'publisher', - component: PublisherListComponent + component: ComicPublishersComponent }, // { // path: 'publishers/:publisherId', -- 2.18.0 From 30f98297687836122972a3b53edf1a15978944a3 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Thu, 18 Sep 2025 23:56:53 +0200 Subject: [PATCH 09/20] add links for media types --- .../media-actors/media-actors.component.css} | 0 .../media-actors/media-actors.component.html | 1 + .../media-actors.component.spec.ts} | 12 ++++++------ .../media-actors/media-actors.component.ts | 11 +++++++++++ .../media-files/media-files.component.css} | 0 .../media-files/media-files.component.html | 1 + .../media-files/media-files.component.spec.ts} | 12 ++++++------ .../media/media-files/media-files.component.ts | 11 +++++++++++ .../media-navigation.component.html | 6 +++--- .../media-section/media-section.routes.ts | 18 +++++++++--------- .../media-videos/media-videos.component.css} | 0 .../media-videos/media-videos.component.html | 1 + .../media-videos.component.spec.ts} | 12 ++++++------ .../media-videos/media-videos.component.ts | 11 +++++++++++ .../media-actor-list.component.html | 1 - .../media-actor-list.component.ts | 11 ----------- .../media-file-list.component.html | 1 - .../media-file-list.component.ts | 11 ----------- .../media-video-list.component.html | 1 - .../media-video-list.component.ts | 11 ----------- 20 files changed, 66 insertions(+), 66 deletions(-) rename kontor-angular/src/app/{media/media-actor/media-actor-list/media-actor-list.component.css => kontor/media/media-actors/media-actors.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/media/media-actors/media-actors.component.html rename kontor-angular/src/app/{media/media-file/media-file-list/media-file-list.component.spec.ts => kontor/media/media-actors/media-actors.component.spec.ts} (51%) create mode 100644 kontor-angular/src/app/kontor/media/media-actors/media-actors.component.ts rename kontor-angular/src/app/{media/media-file/media-file-list/media-file-list.component.css => kontor/media/media-files/media-files.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/media/media-files/media-files.component.html rename kontor-angular/src/app/{media/media-video/media-video-list/media-video-list.component.spec.ts => kontor/media/media-files/media-files.component.spec.ts} (50%) create mode 100644 kontor-angular/src/app/kontor/media/media-files/media-files.component.ts rename kontor-angular/src/app/{media/media-video/media-video-list/media-video-list.component.css => kontor/media/media-videos/media-videos.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/media/media-videos/media-videos.component.html rename kontor-angular/src/app/{media/media-actor/media-actor-list/media-actor-list.component.spec.ts => kontor/media/media-videos/media-videos.component.spec.ts} (50%) create mode 100644 kontor-angular/src/app/kontor/media/media-videos/media-videos.component.ts delete mode 100644 kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.html delete 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-file/media-file-list/media-file-list.component.html delete 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-video/media-video-list/media-video-list.component.html delete mode 100644 kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.ts diff --git a/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.css b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.css similarity index 100% rename from kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.css rename to kontor-angular/src/app/kontor/media/media-actors/media-actors.component.css diff --git a/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.html b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.html new file mode 100644 index 0000000..3904b79 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.html @@ -0,0 +1 @@ +

media-actors 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/kontor/media/media-actors/media-actors.component.spec.ts similarity index 51% rename from kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.spec.ts rename to kontor-angular/src/app/kontor/media/media-actors/media-actors.component.spec.ts index 331bea0..1448ea4 100644 --- a/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MediaFileListComponent } from './media-file-list.component'; +import { MediaActorsComponent } from './media-actors.component'; -describe('MediaFileListComponent', () => { - let component: MediaFileListComponent; - let fixture: ComponentFixture; +describe('MediaActorsComponent', () => { + let component: MediaActorsComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MediaFileListComponent] + imports: [MediaActorsComponent] }) .compileComponents(); - fixture = TestBed.createComponent(MediaFileListComponent); + fixture = TestBed.createComponent(MediaActorsComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.ts b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.ts new file mode 100644 index 0000000..8fbb7f8 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-actors/media-actors.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-media-actors', + imports: [], + templateUrl: './media-actors.component.html', + styleUrl: './media-actors.component.css' +}) +export class MediaActorsComponent { + +} diff --git a/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.css b/kontor-angular/src/app/kontor/media/media-files/media-files.component.css similarity index 100% rename from kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.css rename to kontor-angular/src/app/kontor/media/media-files/media-files.component.css diff --git a/kontor-angular/src/app/kontor/media/media-files/media-files.component.html b/kontor-angular/src/app/kontor/media/media-files/media-files.component.html new file mode 100644 index 0000000..367cd62 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-files/media-files.component.html @@ -0,0 +1 @@ +

media-files works!

diff --git a/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts b/kontor-angular/src/app/kontor/media/media-files/media-files.component.spec.ts similarity index 50% rename from kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts rename to kontor-angular/src/app/kontor/media/media-files/media-files.component.spec.ts index e18eb84..c8f1c9f 100644 --- a/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/media/media-files/media-files.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MediaVideoListComponent } from './media-video-list.component'; +import { MediaFilesComponent } from './media-files.component'; -describe('MediaVideoListComponent', () => { - let component: MediaVideoListComponent; - let fixture: ComponentFixture; +describe('MediaFilesComponent', () => { + let component: MediaFilesComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MediaVideoListComponent] + imports: [MediaFilesComponent] }) .compileComponents(); - fixture = TestBed.createComponent(MediaVideoListComponent); + fixture = TestBed.createComponent(MediaFilesComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts b/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts new file mode 100644 index 0000000..58d983c --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-media-files', + imports: [], + templateUrl: './media-files.component.html', + styleUrl: './media-files.component.css' +}) +export class MediaFilesComponent { + +} diff --git a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html index cd3857f..846dd50 100644 --- a/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html +++ b/kontor-angular/src/app/kontor/media/media-navigation/media-navigation.component.html @@ -1,5 +1,5 @@ diff --git a/kontor-angular/src/app/kontor/media/media-section/media-section.routes.ts b/kontor-angular/src/app/kontor/media/media-section/media-section.routes.ts index fbd256c..9311eed 100644 --- a/kontor-angular/src/app/kontor/media/media-section/media-section.routes.ts +++ b/kontor-angular/src/app/kontor/media/media-section/media-section.routes.ts @@ -1,19 +1,19 @@ import { Routes } from "@angular/router"; -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 { MediaFilesComponent } from './../media-files/media-files.component'; +import { MediaActorsComponent } from '../media-actors/media-actors.component'; +import { MediaVideosComponent } from '../media-videos/media-videos.component'; export const mediaRoutes: Routes = [ { - path: 'mediafiles', - component: MediaFileListComponent + path: 'file', + component: MediaFilesComponent }, { - path: 'mediaactors', - component: MediaActorListComponent + path: 'actor', + component: MediaActorsComponent }, { - path: 'mediavideos', - component: MediaVideoListComponent + path: 'video', + component: MediaVideosComponent }, ]; \ No newline at end of file diff --git a/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.css b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.css similarity index 100% rename from kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.css rename to kontor-angular/src/app/kontor/media/media-videos/media-videos.component.css diff --git a/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.html b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.html new file mode 100644 index 0000000..2aaafcb --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.html @@ -0,0 +1 @@ +

media-videos works!

diff --git a/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.spec.ts similarity index 50% rename from kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts rename to kontor-angular/src/app/kontor/media/media-videos/media-videos.component.spec.ts index 1eae192..ccde24c 100644 --- a/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { MediaActorListComponent } from './media-actor-list.component'; +import { MediaVideosComponent } from './media-videos.component'; -describe('MediaActorListComponent', () => { - let component: MediaActorListComponent; - let fixture: ComponentFixture; +describe('MediaVideosComponent', () => { + let component: MediaVideosComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MediaActorListComponent] + imports: [MediaVideosComponent] }) .compileComponents(); - fixture = TestBed.createComponent(MediaActorListComponent); + fixture = TestBed.createComponent(MediaVideosComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.ts b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.ts new file mode 100644 index 0000000..5b1f52e --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-videos/media-videos.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-media-videos', + imports: [], + templateUrl: './media-videos.component.html', + styleUrl: './media-videos.component.css' +}) +export class MediaVideosComponent { + +} 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 deleted file mode 100644 index 43702b0..0000000 --- a/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

media-actor-list works!

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 deleted file mode 100644 index f765de4..0000000 --- a/kontor-angular/src/app/media/media-actor/media-actor-list/media-actor-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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-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 deleted file mode 100644 index 0c46e27..0000000 --- a/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

media-file-list works!

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 deleted file mode 100644 index f64918a..0000000 --- a/kontor-angular/src/app/media/media-file/media-file-list/media-file-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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-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 deleted file mode 100644 index ae42ba1..0000000 --- a/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

media-video-list works!

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 deleted file mode 100644 index bae8344..0000000 --- a/kontor-angular/src/app/media/media-video/media-video-list/media-video-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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 { - -} -- 2.18.0 From 21533ee9f9398714a6543efef771b2415b53257a Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Fri, 19 Sep 2025 00:17:04 +0200 Subject: [PATCH 10/20] add links for tysc types --- .../tysc-cardsets.component.css} | 0 .../tysc-cardsets.component.html | 1 + .../tysc-cardsets.component.spec.ts} | 12 +++++----- .../tysc-cardsets/tysc-cardsets.component.ts | 11 +++++++++ .../tysc-players/tysc-players.component.css} | 0 .../tysc-players/tysc-players.component.html | 1 + .../tysc-players.component.spec.ts} | 12 +++++----- .../tysc-players/tysc-players.component.ts | 11 +++++++++ .../tysc-positions.component.css} | 0 .../tysc-positions.component.html | 1 + .../tysc-positions.component.spec.ts} | 12 +++++----- .../tysc-positions.component.ts | 11 +++++++++ .../tysc-section/tysc-section.component.html | 1 + .../tysc-section/tysc-section.component.ts | 3 ++- .../tysc/tysc-section/tysc-section.routes.ts | 20 ++++++++-------- .../tysc/tysc-sports}/sport.model.ts | 0 .../tysc/tysc-sports}/sport.service.ts | 4 ++-- .../tysc-sports/tysc-sports.component.css} | 0 .../tysc-sports/tysc-sports.component.html} | 1 + .../tysc-sports.component.spec.ts} | 12 +++++----- .../tysc-sports/tysc-sports.component.ts} | 13 +++++------ .../tysc/tysc-team/tysc-team.component.css} | 0 .../tysc/tysc-team/tysc-team.component.html | 1 + .../tysc-team/tysc-team.component.spec.ts} | 12 +++++----- .../tysc/tysc-team/tysc-team.component.ts | 11 +++++++++ .../tysc/tysc-teams/tysc-teams.component.css} | 0 .../tysc/tysc-teams/tysc-teams.component.html | 1 + .../tysc-teams/tysc-teams.component.spec.ts} | 12 +++++----- .../tysc/tysc-teams/tysc-teams.component.ts | 11 +++++++++ .../tysc-vendors/tysc-vendors.component.css} | 0 .../tysc-vendors/tysc-vendors.component.html | 1 + .../tysc-vendors.component.spec.ts | 23 +++++++++++++++++++ .../tysc-vendors/tysc-vendors.component.ts | 11 +++++++++ .../cardset-list/cardset-list.component.html | 1 - .../cardset-list/cardset-list.component.ts | 11 --------- .../player-list/player-list.component.html | 1 - .../player-list/player-list.component.ts | 11 --------- .../position-list.component.html | 1 - .../position-list/position-list.component.ts | 11 --------- .../sport-selector.component.html | 1 - .../sport-selector.component.ts | 11 --------- .../team/team-list/team-list.component.html | 1 - .../team/team-list/team-list.component.ts | 11 --------- .../vendor-list/vendor-list.component.html | 1 - .../vendor-list/vendor-list.component.spec.ts | 23 ------------------- .../vendor-list/vendor-list.component.ts | 11 --------- 46 files changed, 153 insertions(+), 151 deletions(-) rename kontor-angular/src/app/{tysc/cardset/cardset-list/cardset-list.component.css => kontor/tysc/tysc-cardsets/tysc-cardsets.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.html rename kontor-angular/src/app/{tysc/position/position-list/position-list.component.spec.ts => kontor/tysc/tysc-cardsets/tysc-cardsets.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.ts rename kontor-angular/src/app/{tysc/player/player-list/player-list.component.css => kontor/tysc/tysc-players/tysc-players.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.html rename kontor-angular/src/app/{tysc/cardset/cardset-list/cardset-list.component.spec.ts => kontor/tysc/tysc-players/tysc-players.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.ts rename kontor-angular/src/app/{tysc/position/position-list/position-list.component.css => kontor/tysc/tysc-positions/tysc-positions.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.html rename kontor-angular/src/app/{tysc/sport/sport-selector/sport-selector.component.spec.ts => kontor/tysc/tysc-positions/tysc-positions.component.spec.ts} (52%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.ts rename kontor-angular/src/app/{tysc/sport => kontor/tysc/tysc-sports}/sport.model.ts (100%) rename kontor-angular/src/app/{tysc/sport => kontor/tysc/tysc-sports}/sport.service.ts (93%) rename kontor-angular/src/app/{tysc/sport/sport-list/sport-list.component.css => kontor/tysc/tysc-sports/tysc-sports.component.css} (100%) rename kontor-angular/src/app/{tysc/sport/sport-list/sport-list.component.html => kontor/tysc/tysc-sports/tysc-sports.component.html} (83%) rename kontor-angular/src/app/{tysc/player/player-list/player-list.component.spec.ts => kontor/tysc/tysc-sports/tysc-sports.component.spec.ts} (52%) rename kontor-angular/src/app/{tysc/sport/sport-list/sport-list.component.ts => kontor/tysc/tysc-sports/tysc-sports.component.ts} (73%) rename kontor-angular/src/app/{tysc/sport/sport-selector/sport-selector.component.css => kontor/tysc/tysc-team/tysc-team.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.html rename kontor-angular/src/app/{tysc/team/team-list/team-list.component.spec.ts => kontor/tysc/tysc-team/tysc-team.component.spec.ts} (54%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.ts rename kontor-angular/src/app/{tysc/team/team-list/team-list.component.css => kontor/tysc/tysc-teams/tysc-teams.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.html rename kontor-angular/src/app/{tysc/sport/sport-list/sport-list.component.spec.ts => kontor/tysc/tysc-teams/tysc-teams.component.spec.ts} (53%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.ts rename kontor-angular/src/app/{tysc/vendor/vendor-list/vendor-list.component.css => kontor/tysc/tysc-vendors/tysc-vendors.component.css} (100%) create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.html create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.ts delete mode 100644 kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.html delete mode 100644 kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.ts delete mode 100644 kontor-angular/src/app/tysc/player/player-list/player-list.component.html delete mode 100644 kontor-angular/src/app/tysc/player/player-list/player-list.component.ts delete mode 100644 kontor-angular/src/app/tysc/position/position-list/position-list.component.html delete mode 100644 kontor-angular/src/app/tysc/position/position-list/position-list.component.ts delete mode 100644 kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.html delete mode 100644 kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.ts delete mode 100644 kontor-angular/src/app/tysc/team/team-list/team-list.component.html delete mode 100644 kontor-angular/src/app/tysc/team/team-list/team-list.component.ts delete mode 100644 kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.html delete mode 100644 kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.spec.ts delete mode 100644 kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.ts diff --git a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.css b/kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.css similarity index 100% rename from kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.css rename to kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.css diff --git a/kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.html b/kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.html new file mode 100644 index 0000000..72cccd1 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.html @@ -0,0 +1 @@ +

tysc-cardsets works!

diff --git a/kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.spec.ts similarity index 52% rename from kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts rename to kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.spec.ts index 9034de6..b01812b 100644 --- a/kontor-angular/src/app/tysc/position/position-list/position-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { PositionListComponent } from './position-list.component'; +import { TyscCardsetsComponent } from './tysc-cardsets.component'; -describe('PositionListComponent', () => { - let component: PositionListComponent; - let fixture: ComponentFixture; +describe('TyscCardsetsComponent', () => { + let component: TyscCardsetsComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [PositionListComponent] + imports: [TyscCardsetsComponent] }) .compileComponents(); - fixture = TestBed.createComponent(PositionListComponent); + fixture = TestBed.createComponent(TyscCardsetsComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.ts new file mode 100644 index 0000000..fc3bc35 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-cardsets/tysc-cardsets.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-tysc-cardsets', + imports: [], + templateUrl: './tysc-cardsets.component.html', + styleUrl: './tysc-cardsets.component.css' +}) +export class TyscCardsetsComponent { + +} diff --git a/kontor-angular/src/app/tysc/player/player-list/player-list.component.css b/kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.css similarity index 100% rename from kontor-angular/src/app/tysc/player/player-list/player-list.component.css rename to kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.css diff --git a/kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.html b/kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.html new file mode 100644 index 0000000..e5c03a6 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.html @@ -0,0 +1 @@ +

tysc-players works!

diff --git a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.spec.ts similarity index 52% rename from kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts rename to kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.spec.ts index c957e68..eb0ac63 100644 --- a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { CardsetListComponent } from './cardset-list.component'; +import { TyscPlayersComponent } from './tysc-players.component'; -describe('CardsetListComponent', () => { - let component: CardsetListComponent; - let fixture: ComponentFixture; +describe('TyscPlayersComponent', () => { + let component: TyscPlayersComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [CardsetListComponent] + imports: [TyscPlayersComponent] }) .compileComponents(); - fixture = TestBed.createComponent(CardsetListComponent); + fixture = TestBed.createComponent(TyscPlayersComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.ts new file mode 100644 index 0000000..230670e --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-players/tysc-players.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-tysc-players', + imports: [], + templateUrl: './tysc-players.component.html', + styleUrl: './tysc-players.component.css' +}) +export class TyscPlayersComponent { + +} diff --git a/kontor-angular/src/app/tysc/position/position-list/position-list.component.css b/kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.css similarity index 100% rename from kontor-angular/src/app/tysc/position/position-list/position-list.component.css rename to kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.css diff --git a/kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.html b/kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.html new file mode 100644 index 0000000..1348c4f --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.html @@ -0,0 +1 @@ +

tysc-positions works!

diff --git a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.spec.ts similarity index 52% rename from kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.spec.ts rename to kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.spec.ts index 1bc65be..97425a7 100644 --- a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.spec.ts +++ b/kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { SportSelectorComponent } from './sport-selector.component'; +import { TyscPositionsComponent } from './tysc-positions.component'; -describe('SportSelectorComponent', () => { - let component: SportSelectorComponent; - let fixture: ComponentFixture; +describe('TyscPositionsComponent', () => { + let component: TyscPositionsComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [SportSelectorComponent] + imports: [TyscPositionsComponent] }) .compileComponents(); - fixture = TestBed.createComponent(SportSelectorComponent); + fixture = TestBed.createComponent(TyscPositionsComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.ts new file mode 100644 index 0000000..c77f1d3 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-positions/tysc-positions.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-tysc-positions', + imports: [], + templateUrl: './tysc-positions.component.html', + styleUrl: './tysc-positions.component.css' +}) +export class TyscPositionsComponent { + +} diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.html b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.html index 7acac9b..4b8a158 100644 --- a/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.html +++ b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.html @@ -1,2 +1,3 @@ + diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.ts index 9128136..bb33bc2 100644 --- a/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.ts +++ b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.component.ts @@ -1,10 +1,11 @@ import { Component } from '@angular/core'; import { TyscNavigationComponent } from "../tysc-navigation/tysc-navigation.component"; import { RouterOutlet } from '@angular/router'; +import { TyscSportsComponent } from "../tysc-sports/tysc-sports.component"; @Component({ selector: 'app-tysc-section', - imports: [TyscNavigationComponent, RouterOutlet], + imports: [TyscNavigationComponent, RouterOutlet, TyscSportsComponent], templateUrl: './tysc-section.component.html', styleUrl: './tysc-section.component.css' }) diff --git a/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.routes.ts b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.routes.ts index 87f2079..6f2a995 100644 --- a/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.routes.ts +++ b/kontor-angular/src/app/kontor/tysc/tysc-section/tysc-section.routes.ts @@ -1,29 +1,29 @@ import { Routes } from "@angular/router"; -import { TeamListComponent } from "../../../tysc/team/team-list/team-list.component"; -import { PlayerListComponent } from "../../../tysc/player/player-list/player-list.component"; -import { PositionListComponent } from "../../../tysc/position/position-list/position-list.component"; -import { CardsetListComponent } from "../../../tysc/cardset/cardset-list/cardset-list.component"; -import { VendorListComponent } from "../../../tysc/vendor/vendor-list/vendor-list.component"; +import { TyscTeamsComponent } from "../tysc-teams/tysc-teams.component"; +import { TyscPlayersComponent } from "../tysc-players/tysc-players.component"; +import { TyscPositionsComponent } from "../tysc-positions/tysc-positions.component"; +import { TyscVendorsComponent } from "../tysc-vendors/tysc-vendors.component"; +import { TyscCardsetsComponent } from "../tysc-cardsets/tysc-cardsets.component"; export const tyscRoutes: Routes = [ { path: 'team', - component: TeamListComponent + component: TyscTeamsComponent }, { path: 'player', - component: PlayerListComponent + component: TyscPlayersComponent }, { path: 'position', - component: PositionListComponent + component: TyscPositionsComponent }, { path: 'cardset', - component: CardsetListComponent + component: TyscCardsetsComponent }, { path: 'vendor', - component: VendorListComponent + component: TyscVendorsComponent }, ]; diff --git a/kontor-angular/src/app/tysc/sport/sport.model.ts b/kontor-angular/src/app/kontor/tysc/tysc-sports/sport.model.ts similarity index 100% rename from kontor-angular/src/app/tysc/sport/sport.model.ts rename to kontor-angular/src/app/kontor/tysc/tysc-sports/sport.model.ts diff --git a/kontor-angular/src/app/tysc/sport/sport.service.ts b/kontor-angular/src/app/kontor/tysc/tysc-sports/sport.service.ts similarity index 93% rename from kontor-angular/src/app/tysc/sport/sport.service.ts rename to kontor-angular/src/app/kontor/tysc/tysc-sports/sport.service.ts index 31945dd..bae168c 100644 --- a/kontor-angular/src/app/tysc/sport/sport.service.ts +++ b/kontor-angular/src/app/kontor/tysc/tysc-sports/sport.service.ts @@ -1,8 +1,8 @@ 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"; +import { ErrorService } from "../../../shared/error.service"; +import { Sport } from "./sport.model"; @Injectable({ providedIn: 'root', diff --git a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.css b/kontor-angular/src/app/kontor/tysc/tysc-sports/tysc-sports.component.css similarity index 100% rename from kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.css rename to kontor-angular/src/app/kontor/tysc/tysc-sports/tysc-sports.component.css diff --git a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.html b/kontor-angular/src/app/kontor/tysc/tysc-sports/tysc-sports.component.html similarity index 83% rename from kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.html rename to kontor-angular/src/app/kontor/tysc/tysc-sports/tysc-sports.component.html index 36f5c85..1f62960 100644 --- a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.html +++ b/kontor-angular/src/app/kontor/tysc/tysc-sports/tysc-sports.component.html @@ -1,3 +1,4 @@ +

tysc-sports works!

sport-list works!

    @for (sport of sports(); track sport.id) { diff --git a/kontor-angular/src/app/tysc/player/player-list/player-list.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-sports/tysc-sports.component.spec.ts similarity index 52% rename from kontor-angular/src/app/tysc/player/player-list/player-list.component.spec.ts rename to kontor-angular/src/app/kontor/tysc/tysc-sports/tysc-sports.component.spec.ts index 0d08ee9..5854048 100644 --- a/kontor-angular/src/app/tysc/player/player-list/player-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/tysc/tysc-sports/tysc-sports.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { PlayerListComponent } from './player-list.component'; +import { TyscSportsComponent } from './tysc-sports.component'; -describe('PlayerListComponent', () => { - let component: PlayerListComponent; - let fixture: ComponentFixture; +describe('TyscSportsComponent', () => { + let component: TyscSportsComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [PlayerListComponent] + imports: [TyscSportsComponent] }) .compileComponents(); - fixture = TestBed.createComponent(PlayerListComponent); + fixture = TestBed.createComponent(TyscSportsComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-sports/tysc-sports.component.ts similarity index 73% rename from kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.ts rename to kontor-angular/src/app/kontor/tysc/tysc-sports/tysc-sports.component.ts index a22dd75..7808133 100644 --- a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.ts +++ b/kontor-angular/src/app/kontor/tysc/tysc-sports/tysc-sports.component.ts @@ -1,14 +1,14 @@ import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; -import { Sport } from '../sport.model'; -import { SportService } from '../sport.service'; +import { Sport } from './sport.model'; +import { SportService } from './sport.service'; @Component({ - selector: 'app-sport-list', + selector: 'app-tysc-sports', imports: [], - templateUrl: './sport-list.component.html', - styleUrl: './sport-list.component.css' + templateUrl: './tysc-sports.component.html', + styleUrl: './tysc-sports.component.css' }) -export class SportListComponent implements OnInit { +export class TyscSportsComponent implements OnInit { sports = signal(undefined); isFetching = signal(false); error = signal(''); @@ -34,5 +34,4 @@ export class SportListComponent implements OnInit { subscription.unsubscribe(); }); } - } diff --git a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.css b/kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.css similarity index 100% rename from kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.css rename to kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.css diff --git a/kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.html b/kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.html new file mode 100644 index 0000000..d4584d4 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.html @@ -0,0 +1 @@ +

    tysc-team works!

    diff --git a/kontor-angular/src/app/tysc/team/team-list/team-list.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.spec.ts similarity index 54% rename from kontor-angular/src/app/tysc/team/team-list/team-list.component.spec.ts rename to kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.spec.ts index b8a8711..15d76cb 100644 --- a/kontor-angular/src/app/tysc/team/team-list/team-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { TeamListComponent } from './team-list.component'; +import { TyscTeamComponent } from './tysc-team.component'; -describe('TeamListComponent', () => { - let component: TeamListComponent; - let fixture: ComponentFixture; +describe('TyscTeamComponent', () => { + let component: TyscTeamComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [TeamListComponent] + imports: [TyscTeamComponent] }) .compileComponents(); - fixture = TestBed.createComponent(TeamListComponent); + fixture = TestBed.createComponent(TyscTeamComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.ts new file mode 100644 index 0000000..62ca09c --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-team/tysc-team.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-tysc-team', + imports: [], + templateUrl: './tysc-team.component.html', + styleUrl: './tysc-team.component.css' +}) +export class TyscTeamComponent { + +} diff --git a/kontor-angular/src/app/tysc/team/team-list/team-list.component.css b/kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.css similarity index 100% rename from kontor-angular/src/app/tysc/team/team-list/team-list.component.css rename to kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.css diff --git a/kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.html b/kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.html new file mode 100644 index 0000000..8cfc44f --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.html @@ -0,0 +1 @@ +

    tysc-teams works!

    diff --git a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.spec.ts similarity index 53% rename from kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts rename to kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.spec.ts index 7a1c646..dc60252 100644 --- a/kontor-angular/src/app/tysc/sport/sport-list/sport-list.component.spec.ts +++ b/kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.spec.ts @@ -1,18 +1,18 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { SportListComponent } from './sport-list.component'; +import { TyscTeamsComponent } from './tysc-teams.component'; -describe('SportListComponent', () => { - let component: SportListComponent; - let fixture: ComponentFixture; +describe('TyscTeamsComponent', () => { + let component: TyscTeamsComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [SportListComponent] + imports: [TyscTeamsComponent] }) .compileComponents(); - fixture = TestBed.createComponent(SportListComponent); + fixture = TestBed.createComponent(TyscTeamsComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.ts new file mode 100644 index 0000000..070d4c3 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-teams/tysc-teams.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-tysc-teams', + imports: [], + templateUrl: './tysc-teams.component.html', + styleUrl: './tysc-teams.component.css' +}) +export class TyscTeamsComponent { + +} diff --git a/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.css b/kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.css similarity index 100% rename from kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.css rename to kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.css diff --git a/kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.html b/kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.html new file mode 100644 index 0000000..3b47744 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.html @@ -0,0 +1 @@ +

    tysc-vendors works!

    diff --git a/kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.spec.ts b/kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.spec.ts new file mode 100644 index 0000000..6bbd10f --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TyscVendorsComponent } from './tysc-vendors.component'; + +describe('TyscVendorsComponent', () => { + let component: TyscVendorsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [TyscVendorsComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(TyscVendorsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.ts b/kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.ts new file mode 100644 index 0000000..7071433 --- /dev/null +++ b/kontor-angular/src/app/kontor/tysc/tysc-vendors/tysc-vendors.component.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-tysc-vendors', + imports: [], + templateUrl: './tysc-vendors.component.html', + styleUrl: './tysc-vendors.component.css' +}) +export class TyscVendorsComponent { + +} 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 deleted file mode 100644 index 45f5e7b..0000000 --- a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

    cardset-list works!

    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 deleted file mode 100644 index 67d92e0..0000000 --- a/kontor-angular/src/app/tysc/cardset/cardset-list/cardset-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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.html b/kontor-angular/src/app/tysc/player/player-list/player-list.component.html deleted file mode 100644 index 66a8ec9..0000000 --- a/kontor-angular/src/app/tysc/player/player-list/player-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

    player-list works!

    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 deleted file mode 100644 index 72646c0..0000000 --- a/kontor-angular/src/app/tysc/player/player-list/player-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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.html b/kontor-angular/src/app/tysc/position/position-list/position-list.component.html deleted file mode 100644 index 652033e..0000000 --- a/kontor-angular/src/app/tysc/position/position-list/position-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

    position-list works!

    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 deleted file mode 100644 index f76b808..0000000 --- a/kontor-angular/src/app/tysc/position/position-list/position-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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-selector/sport-selector.component.html b/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.html deleted file mode 100644 index 8339199..0000000 --- a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.html +++ /dev/null @@ -1 +0,0 @@ -

    sport-selector works!

    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 deleted file mode 100644 index 896f350..0000000 --- a/kontor-angular/src/app/tysc/sport/sport-selector/sport-selector.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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/team/team-list/team-list.component.html b/kontor-angular/src/app/tysc/team/team-list/team-list.component.html deleted file mode 100644 index 5f0a00a..0000000 --- a/kontor-angular/src/app/tysc/team/team-list/team-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

    team-list works!

    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 deleted file mode 100644 index f3b7766..0000000 --- a/kontor-angular/src/app/tysc/team/team-list/team-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -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/vendor/vendor-list/vendor-list.component.html b/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.html deleted file mode 100644 index aedf60d..0000000 --- a/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.html +++ /dev/null @@ -1 +0,0 @@ -

    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 deleted file mode 100644 index fc3ed2c..0000000 --- a/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -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 deleted file mode 100644 index 073a098..0000000 --- a/kontor-angular/src/app/tysc/vendor/vendor-list/vendor-list.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-vendor-list', - imports: [], - templateUrl: './vendor-list.component.html', - styleUrl: './vendor-list.component.css' -}) -export class VendorListComponent { - -} -- 2.18.0 From 63ac0231dc4c504a399724790b79c81dfae87e28 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Fri, 19 Sep 2025 00:55:04 +0200 Subject: [PATCH 11/20] add route for specific comic --- .../comic-comic/comic-comic.component.css | 0 .../comic-comic/comic-comic.component.html | 7 ++++ .../comic-comic/comic-comic.component.spec.ts | 23 ++++++++++++ .../comic-comic/comic-comic.component.ts | 13 +++++++ .../comic-comics-list.component.css | 0 .../comic-comics-list.component.html | 9 +++++ .../comic-comics-list.component.spec.ts | 23 ++++++++++++ .../comic-comics-list.component.ts | 37 +++++++++++++++++++ .../comic-comics/comic-comics.component.html | 6 +++ .../comic-comics/comic-comics.component.ts | 3 +- .../kontor/comic/comic-comics/comic.model.ts | 5 +++ .../comic/comic-comics/comic.service.ts | 28 ++++++++++++++ .../comic-section/comic-section.routes.ts | 8 ++-- 13 files changed, 157 insertions(+), 5 deletions(-) create mode 100644 kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.css create mode 100644 kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.html create mode 100644 kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.css create mode 100644 kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.html create mode 100644 kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-comics/comic.model.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-comics/comic.service.ts diff --git a/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.css b/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.html b/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.html new file mode 100644 index 0000000..684553a --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.html @@ -0,0 +1,7 @@ +

    comic-comic works!

    +

    comic works!

    + diff --git a/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.spec.ts new file mode 100644 index 0000000..c390c8d --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComicComicComponent } from './comic-comic.component'; + +describe('ComicComicComponent', () => { + let component: ComicComicComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ComicComicComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ComicComicComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.ts b/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.ts new file mode 100644 index 0000000..5508e11 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.ts @@ -0,0 +1,13 @@ +import { Component, input } from '@angular/core'; +import { Comic } from '../comic-comics/comic.model'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-comic-comic', + imports: [RouterLink, RouterLinkActive], + templateUrl: './comic-comic.component.html', + styleUrl: './comic-comic.component.css' +}) +export class ComicComicComponent { + comic = input.required(); +} diff --git a/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.css b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.html b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.html new file mode 100644 index 0000000..938afc3 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.html @@ -0,0 +1,9 @@ +

    comic-comics-list works!

    +

    comic-list works!

    +
      + @for (comic of comics(); track comic.id) { +
    • + +
    • + } +
    diff --git a/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.spec.ts new file mode 100644 index 0000000..a68ff6d --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComicComicsListComponent } from './comic-comics-list.component'; + +describe('ComicComicsListComponent', () => { + let component: ComicComicsListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ComicComicsListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ComicComicsListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.ts b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.ts new file mode 100644 index 0000000..ec94c71 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.ts @@ -0,0 +1,37 @@ +import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; +import { Comic } from '../comic-comics/comic.model'; +import { ComicService } from '../comic-comics/comic.service'; +import { ComicComicComponent } from "../comic-comic/comic-comic.component"; + +@Component({ + selector: 'app-comic-comics-list', + imports: [ComicComicComponent], + templateUrl: './comic-comics-list.component.html', + styleUrl: './comic-comics-list.component.css' +}) +export class ComicComicsListComponent implements OnInit { + comics = signal(undefined); + isFetching = signal(false); + error = signal(''); + private comicsService = inject(ComicService); + private destroyRef = inject(DestroyRef); + + ngOnInit() { + this.isFetching.set(true); + const subscription = this.comicsService.loadComics().subscribe({ + next: (comics) => { + this.comics.set(comics); + }, + 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/kontor/comic/comic-comics/comic-comics.component.html b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.html index 3f1c3dc..cbcec80 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.html @@ -1 +1,7 @@

    comic-comics works!

    +
    + +
    +
    +

    Comic Details

    +
    diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts index bf8e770..b5526b8 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts @@ -1,8 +1,9 @@ import { Component } from '@angular/core'; +import { ComicComicsListComponent } from "../comic-comics-list/comic-comics-list.component"; @Component({ selector: 'app-comic-comics', - imports: [], + imports: [ComicComicsListComponent], templateUrl: './comic-comics.component.html', styleUrl: './comic-comics.component.css' }) diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic.model.ts b/kontor-angular/src/app/kontor/comic/comic-comics/comic.model.ts new file mode 100644 index 0000000..444d197 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic.model.ts @@ -0,0 +1,5 @@ +export interface Comic { + id: string; + title: string; + completed: boolean; +} diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic.service.ts b/kontor-angular/src/app/kontor/comic/comic-comics/comic.service.ts new file mode 100644 index 0000000..90ed19f --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic.service.ts @@ -0,0 +1,28 @@ +import { HttpClient } from "@angular/common/http"; +import { inject, Injectable, signal } from "@angular/core"; +import { Comic } from "./comic.model"; +import { catchError, map, throwError } from "rxjs"; + +@Injectable({ + providedIn: 'root' +}) +export class ComicService { + private httpClient = inject(HttpClient); + private comics = signal([]); + + loadedComics = this.comics.asReadonly(); + + loadComics() { + return this.fetchComics('http://127.0.0.1:8800/api/comics/comics', 'Someting went wrong fetching comics. Please try again later.'); + } + + private fetchComics(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/kontor/comic/comic-section/comic-section.routes.ts b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts index f6048bd..23bd73d 100644 --- a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts +++ b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts @@ -8,10 +8,10 @@ export const comicRoutes: Routes = [ path: 'comics', component: ComicComicsComponent }, - // { - // path: 'comics/:comicId', - // component: ComicDetailsComponent, - // }, + { + path: 'comics/:comicId', + component: ComicComicsComponent, + }, { path: 'publisher', component: ComicPublishersComponent -- 2.18.0 From b250bfe76c9d1c5b756e6333fae09127e8ae4444 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Fri, 19 Sep 2025 14:50:45 +0200 Subject: [PATCH 12/20] WIP: setup styling --- .../comic-artists/comic-artists.component.css | 5 ++++ .../comic-artists.component.html | 12 ++++---- .../comic-comic/comic-comic.component.html | 2 -- .../comic-comics-list.component.css | 14 +++++++++ .../comic-comics-list.component.html | 2 -- .../comic-comics/comic-comics.component.css | 29 +++++++++++++++++++ .../comic-comics/comic-comics.component.html | 15 ++++++---- .../app/kontor/footer/footer.component.css | 2 ++ .../app/kontor/footer/footer.component.html | 8 +++-- 9 files changed, 71 insertions(+), 18 deletions(-) diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css index e69de29..03c2857 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css @@ -0,0 +1,5 @@ +.grid-container { + display: grid; + grid-template-columns: 1fr 1fr; + grid-gap: 20px; +} \ No newline at end of file diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html index a083862..792b214 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html @@ -1,7 +1,9 @@

    artists works!

    -
    - -
    -
    -

    Artist Details

    +
    +
    + +
    +
    +

    Artist Details

    +
    diff --git a/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.html b/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.html index 684553a..ac9bb02 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.html @@ -1,5 +1,3 @@ -

    comic-comic works!

    -

    comic works!

    {{ comic().title }} diff --git a/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.css b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.css index e69de29..d95c44d 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.css +++ b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.css @@ -0,0 +1,14 @@ +ul { + list-style: none; + margin: 0; + padding: 0; + display: flex; + gap: 0.5rem; + overflow: auto; +} + +@media (min-width: 768px) { + ul { + flex-direction: column; + } +} diff --git a/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.html b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.html index 938afc3..3c6d0ba 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.html @@ -1,5 +1,3 @@ -

    comic-comics-list works!

    -

    comic-list works!

    diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts index b5526b8..3c15733 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts @@ -1,5 +1,8 @@ -import { Component } from '@angular/core'; +import { Component, inject, input } from '@angular/core'; import { ComicComicsListComponent } from "../comic-comics-list/comic-comics-list.component"; +import { ComicDetails } from './comic.model'; +import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router'; +import { ComicService } from './comic.service'; @Component({ selector: 'app-comic-comics', @@ -8,5 +11,13 @@ import { ComicComicsListComponent } from "../comic-comics-list/comic-comics-list styleUrl: './comic-comics.component.css' }) export class ComicComicsComponent { - + comic = input.required(); } + +export const comicResolver: ResolveFn = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => { + const comicService = inject(ComicService); + const comicId = route.paramMap.get('comicId'); + const comicDetails = comicService.loadComicDetails(comicId); + console.log(comicDetails); + return comicDetails; +}; diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic.model.ts b/kontor-angular/src/app/kontor/comic/comic-comics/comic.model.ts index 444d197..98bdc10 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics/comic.model.ts +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic.model.ts @@ -3,3 +3,20 @@ export interface Comic { title: string; completed: boolean; } + +export interface ComicWork { + worktype: string; + +} +export interface ComicDetails { + id: string; + created: string; + title: string; + completed: boolean; + current_order: boolean; + weblink: string; + publisher: string; + volumes: [ + name: string, + ]; +} diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic.service.ts b/kontor-angular/src/app/kontor/comic/comic-comics/comic.service.ts index 90ed19f..9ba608f 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics/comic.service.ts +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic.service.ts @@ -1,6 +1,6 @@ import { HttpClient } from "@angular/common/http"; import { inject, Injectable, signal } from "@angular/core"; -import { Comic } from "./comic.model"; +import { Comic, ComicDetails } from "./comic.model"; import { catchError, map, throwError } from "rxjs"; @Injectable({ @@ -16,6 +16,23 @@ export class ComicService { return this.fetchComics('http://127.0.0.1:8800/api/comics/comics', 'Someting went wrong fetching comics. Please try again later.'); } + loadComicDetails(comicId: string | null) { + return this.fetchComicDetails('http://127.0.0.1:8800/api/comics/comics/' + comicId, 'Someting went wrong fetching comics. Please try again later.'); + } + + private fetchComicDetails(url: string, errorMessage: string) { + return this.httpClient.get(url).pipe( + map((resData) => { + console.log(resData); + return resData; + }), + catchError((error) => { + console.log(error); + return throwError(() => new Error(errorMessage)); + }) + ); + } + private fetchComics(url: string, errorMessage: string) { return this.httpClient.get(url).pipe( map((resData) => resData), diff --git a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts index 23bd73d..465a5d3 100644 --- a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts +++ b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts @@ -1,29 +1,32 @@ import { Routes } from "@angular/router"; import { ComicArtistsComponent } from "../comic-artists/comic-artists.component"; import { ComicPublishersComponent } from './../comic-publishers/comic-publishers.component'; -import { ComicComicsComponent } from "../comic-comics/comic-comics.component"; +import { ComicComicsComponent, comicResolver } from "../comic-comics/comic-comics.component"; export const comicRoutes: Routes = [ { - path: 'comics', + path: 'comics', component: ComicComicsComponent }, { - path: 'comics/:comicId', - component: ComicComicsComponent, + path: 'comics/:comicId', + component: ComicComicsComponent, + resolve: { + comic: comicResolver + } }, - { - path: 'publisher', + { + path: 'publisher', component: ComicPublishersComponent }, // { // path: 'publishers/:publisherId', // component: PublishersComponent, // }, - { - path: 'artist', + { + path: 'artist', component: ComicArtistsComponent - }, + }, { path: 'artist/:artistId', component: ComicArtistsComponent, -- 2.18.0 From 64ed4876a5c60d55c5dafcd6cff1230e55040a58 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Sat, 20 Sep 2025 13:05:07 +0200 Subject: [PATCH 14/20] change response for comic details --- kontor-api/src/apis/version1/comic.py | 5 +- kontor-api/src/db/models/comic.py | 7 ++- kontor-api/src/db/repository/comics/comic.py | 16 +++--- kontor-api/src/schema/comics/comic.py | 55 +++++++++++++------- kontor-api/src/schema/comics/volume.py | 6 +++ kontor-api/src/schema/comics/worktype.py | 5 ++ 6 files changed, 63 insertions(+), 31 deletions(-) create mode 100644 kontor-api/src/schema/comics/volume.py diff --git a/kontor-api/src/apis/version1/comic.py b/kontor-api/src/apis/version1/comic.py index 7bd0c59..a4afb7b 100644 --- a/kontor-api/src/apis/version1/comic.py +++ b/kontor-api/src/apis/version1/comic.py @@ -2,6 +2,7 @@ from typing import List, AnyStr from fastapi import APIRouter, HTTPException, status from src.apis.utils import SessionDep +from src.core.log_conf import logger from src.db.repository.comics.artist import get_artist_details from src.db.repository.comics.comic import list_comics, get_issue_details from src.schema.comics.comic import ComicResponse, ComicDetailsResponse, get_comic_details, get_short_info @@ -26,7 +27,9 @@ def get_comic(comic_id: AnyStr, db: SessionDep) -> ComicDetailsResponse: comic = db.get(Comic, comic_id) if comic is None: raise HTTPException(status_code=404, detail="Comic could not be found") + logger.info(f"create ComicDetailsResponse for {comic}") response: ComicDetailsResponse = get_comic_details(comic) + logger.info(f"ComicDetailsResponse: {response}") return response @router.get("/artists", response_model=List[ArtistResponse]) @@ -34,7 +37,7 @@ def get_all_artists(db: SessionDep) -> List[ArtistResponse]: results: List[ArtistResponse] = [] artists = db.query(Artist).all() for artist in artists: - results.append(ArtistResponse(id=artist.id, name=artist.name)) + results.append(ArtistResponse(id=artist.id, name=str(artist.name))) return results @router.get("/artists/{artist_id}", response_model=ArtistDetailResponse) diff --git a/kontor-api/src/db/models/comic.py b/kontor-api/src/db/models/comic.py index 09109ab..b22214a 100644 --- a/kontor-api/src/db/models/comic.py +++ b/kontor-api/src/db/models/comic.py @@ -107,10 +107,10 @@ class Issue(Base, BaseMixin): story_arc = relationship("StoryArc", back_populates="issues") issue_works = relationship("IssueWork") - def get_full_title(self) -> AnyStr: - full_title: AnyStr = self.issue_number + def get_full_title(self) -> str: + full_title: str = str(self.issue_number) if self.title: - full_title += ": " + self.title + full_title += str(": " + self.title) return full_title def get_artists(self) -> Dict[Any, List[Any]]: @@ -186,4 +186,3 @@ class IssueWork(Base, BaseMixin): artist = relationship("Artist", back_populates="issue_works") work_type_id = Column(String, ForeignKey("worktype.id"), nullable=False) work_type = relationship("WorkType", back_populates="issue_works") - diff --git a/kontor-api/src/db/repository/comics/comic.py b/kontor-api/src/db/repository/comics/comic.py index 0f208c1..0ff87b4 100644 --- a/kontor-api/src/db/repository/comics/comic.py +++ b/kontor-api/src/db/repository/comics/comic.py @@ -8,7 +8,7 @@ from src.schema.comics.comic import ComicSchema from src.schema.comics.issue import IssueDetailsResponse -def list_comics(db: Session) -> List[Type[Comic]]: +def list_comics(db: Session) -> List[Comic]: comics = db.query(Comic).all() return comics @@ -16,16 +16,16 @@ def list_comics(db: Session) -> List[Type[Comic]]: def get_issue_details(issue: Issue) -> IssueDetailsResponse: response = IssueDetailsResponse( id=issue.id, - issue_number=issue.issue_number, - in_stock=issue.in_stock, - is_read=issue.is_read, - comic_id=issue.comic_id, - volume_id=issue.volume_id + issue_number=str(issue.issue_number), + in_stock=bool(issue.in_stock), + is_read=bool(issue.is_read), + comic_id=str(issue.comic_id), + volume_id=str(issue.volume_id) ) return response def update_comic(comic: ComicSchema, comic_id: AnyStr, db: Session) -> type[Comic] | None: logger.info(f"update_comic: {comic} with {comic_id}") - comic = db.get(Comic, comic_id) - return comic + comic = db.get(Comic, comic_id) # type: ignore + return comic # type: ignore diff --git a/kontor-api/src/schema/comics/comic.py b/kontor-api/src/schema/comics/comic.py index b6b89dc..784410d 100644 --- a/kontor-api/src/schema/comics/comic.py +++ b/kontor-api/src/schema/comics/comic.py @@ -2,7 +2,11 @@ from typing import List, Dict, Optional from pydantic import BaseModel, AnyUrl +from src.core.log_conf import logger from src.db.models.comic import Comic +from src.schema.comics.artist import ArtistResponse +from src.schema.comics.volume import VolumeResponse +from src.schema.comics.worktype import WorktypeResponse class ComicResponse(BaseModel): @@ -10,6 +14,13 @@ class ComicResponse(BaseModel): title: str completed: bool + + +class ComicWorktypeArtistResponse(BaseModel): + worktype: WorktypeResponse + artists: List[ArtistResponse] + + class ComicDetailsResponse(BaseModel): id: str created: str @@ -18,9 +29,9 @@ class ComicDetailsResponse(BaseModel): current_order : bool weblink: str publisher: str - volumes: List[str] - works: Dict[str, List[str]] - + volumes: List[VolumeResponse] + works: List[ComicWorktypeArtistResponse] + class ComicSchema(BaseModel): id: str @@ -33,31 +44,39 @@ class ComicSchema(BaseModel): def get_short_info(comic: Comic) -> ComicResponse: response = ComicResponse( id=comic.id, - title=comic.title, - completed=(comic.completed == 1) + title=str(comic.title), + completed=bool(comic.completed == 1) ) return response -def get_comic_details(comic: Comic) -> ComicDetailsResponse | None: - volumes = [] +def get_comic_details(comic: Comic) -> ComicDetailsResponse: + volumes: List[VolumeResponse] = [] for volume in comic.volumes: - volumes.append(volume.name) - works = {} + volumes.append(VolumeResponse(id=volume.id, name=volume.name)) + works: List[ComicWorktypeArtistResponse] = [] + works_map: Dict[str, ComicWorktypeArtistResponse] = {} for work in comic.comic_works: - work_type = work.work_type.name - artist_name = work.artist.name - if work_type in works: - works[work_type].append(artist_name) + worktype_id = work.work_type.id + if worktype_id in works_map: + artist = ArtistResponse(id=work.artist.id, name=work.artist.name) + works_map[worktype_id].artists.append(artist) + logger.info(f"add artist to response map: {artist} -> {works_map}") + print(f"add artist to response map: {artist} -> {works_map}") else: - works[work_type] = [artist_name] + works_map[worktype_id] = ComicWorktypeArtistResponse( + worktype=WorktypeResponse(id=worktype_id, name=work.work_type.name), + artists=[ArtistResponse(id=work.artist.id, name=work.artist.name)] + ) + for value in works_map.values(): + works.append(value) response = ComicDetailsResponse( id=comic.id, created=str(comic.created_date), - title=comic.title, - completed=comic.completed, - current_order=comic.current_order, - weblink=comic.weblink, + title=str(comic.title), + completed=bool(comic.completed), + current_order=bool(comic.current_order), + weblink=str(comic.weblink), publisher=comic.publisher.name, volumes=volumes, works=works diff --git a/kontor-api/src/schema/comics/volume.py b/kontor-api/src/schema/comics/volume.py new file mode 100644 index 0000000..81d7985 --- /dev/null +++ b/kontor-api/src/schema/comics/volume.py @@ -0,0 +1,6 @@ +from pydantic import BaseModel + + +class VolumeResponse(BaseModel): + id: str + name: str diff --git a/kontor-api/src/schema/comics/worktype.py b/kontor-api/src/schema/comics/worktype.py index 9efccd1..a072938 100644 --- a/kontor-api/src/schema/comics/worktype.py +++ b/kontor-api/src/schema/comics/worktype.py @@ -2,3 +2,8 @@ from pydantic import BaseModel class AddWorkType(BaseModel): worktype: str + +class WorktypeResponse(BaseModel): + id: str + name: str + -- 2.18.0 From 6d88b87f9341d55d4276e7f1299fd396357111c8 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Sun, 21 Sep 2025 20:09:46 +0200 Subject: [PATCH 15/20] add comic artists --- kontor-angular/public/cross.png | Bin 0 -> 544 bytes kontor-angular/public/logo.png | Bin 0 -> 17196 bytes kontor-angular/public/tick.png | Bin 0 -> 634 bytes .../comic-artists-list.component.ts | 1 - .../comic/comic-artists/artist.model.ts | 6 ++ .../comic/comic-artists/artist.service.ts | 19 ++++- .../comic-artists.component.html | 7 +- .../comic-artists/comic-artists.component.ts | 15 +++- .../comic-section/comic-section.routes.ts | 13 ++-- .../media/media-file/media-file.component.css | 0 .../media-file/media-file.component.html | 17 +++++ .../media-file/media-file.component.spec.ts | 23 ++++++ .../media/media-file/media-file.component.ts | 13 ++++ .../media-files-list.component.css | 14 ++++ .../media-files-list.component.html | 7 ++ .../media-files-list.component.spec.ts | 23 ++++++ .../media-files-list.component.ts | 37 ++++++++++ .../media/media-files/media-file.model.ts | 11 +++ .../media/media-files/media-file.service.ts | 30 ++++++++ .../media-files/media-files.component.css | 5 ++ .../media-files/media-files.component.html | 8 +- .../media-files/media-files.component.ts | 3 +- .../media-section/media-section.routes.ts | 14 +++- kontor-api/src/apis/version1/comic.py | 15 ++-- kontor-api/src/db/repository/comics/artist.py | 24 ++++-- kontor-api/src/db/repository/comics/comic.py | 51 ++++++++++++- kontor-api/src/schema/comics/artist.py | 9 --- .../src/schema/comics/artist_details.py | 16 ++++ kontor-api/src/schema/comics/comic.py | 69 +----------------- kontor-api/src/schema/comics/comic_details.py | 23 ++++++ 30 files changed, 366 insertions(+), 107 deletions(-) create mode 100644 kontor-angular/public/cross.png create mode 100644 kontor-angular/public/logo.png create mode 100644 kontor-angular/public/tick.png create mode 100644 kontor-angular/src/app/kontor/media/media-file/media-file.component.css create mode 100644 kontor-angular/src/app/kontor/media/media-file/media-file.component.html create mode 100644 kontor-angular/src/app/kontor/media/media-file/media-file.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/media/media-file/media-file.component.ts create mode 100644 kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.css create mode 100644 kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.html create mode 100644 kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.ts create mode 100644 kontor-angular/src/app/kontor/media/media-files/media-file.model.ts create mode 100644 kontor-angular/src/app/kontor/media/media-files/media-file.service.ts create mode 100644 kontor-api/src/schema/comics/artist_details.py create mode 100644 kontor-api/src/schema/comics/comic_details.py diff --git a/kontor-angular/public/cross.png b/kontor-angular/public/cross.png new file mode 100644 index 0000000000000000000000000000000000000000..6b9fa6dd36ee8165272a13dd263f573507c78ca6 GIT binary patch literal 544 zcmV+*0^j|KP)L-ku(! z6_?D-?!0+#=VtbVZQGdTnZt~apI_HPK#=zVadHM((E`e*C+RoFb)Qo8-U{Lb7{`Tz zw4B8FZ|o?Wox+p=1wp47C;7ar*Xu~;a?<=sjPv>+otDjJ6FaGt!YnNyxQQhp)G1V! zk;r6ZtyV)c8pTbiRAnHRNXTxti%=+p$4aG2*+mMM&xrdiU^`VPk^N*+HX98^7!HT% zwA%;A{T)GxeQ|RcxyzV%! z$AbYD+)i1R64zB?q}NmTz}5|04~J#YG_goA*Eq(QJvp7pG14hUj1pZ^t>3S*xqHUO ze~r;}zTY_XkZ*}d@gm!;N90h8nBQenBUZ_ukZKNicn*hc_Pmc!Jn|2=s<~}>!Sb>Qm3!QP46b_JFw5YU70Tu$X}=T}ez@@t%j iG9vD)nDux55?}x$+|UyQVK_bj0000KKfcNJ0=KdK;n}H6psyi`aLHBC(1VPOvYGTb6UR--Kt{$wru0-s z$2%22Y3R=IEUk4To3pdBo}Y&=>!teJLiOL9mkj*>%25A%^U`~%GgCCzq|SV&xh8(* z?>wJ#>!RxC*exZY#?G{}@?UvS^D?GFidLxmvZXNWb8Fr z6ZLE7mfG8u#M65RF!NhJ2sgJ+=Ve&1YO>j1iGNxQTO{yk-h=fGpwm9Ya zH$q|eHWp;v;f#EVKbMA!deUwQ zsSX4*@|~EdDmX&@rj2hkLf<(*IB4AWt3 z?e88n1R7o8nh`SA>|5`~SQs9DWdRU=d;6OJbmuBL(<@J2+N~DL3AhpF3M|`wXAEMxZ4=g#PLBzJ`b|?B zMOWn?m)SL_I2Icf$HN}MDFNggytE!UvB|v)5k_i5+m>l!Vq%}1f2dL4VP|=}m*8B* z4cSb|wNGYO>Q9`)u~U_o_J6}Ls`i?ae|Dp!qSB=gR(AA14t%5(ZPGi>Oc~-JoHEp4 zQaI#*nwgm~y5oV=D;#={H}hXg;tQXt)~piuV+qiexj4pH?1_NEV$DoUVwbrh6tcDf zuJIn<->|q^Qkx{_+E-z21QIrztI~XIrP9M2Df@84gSwQ>UeE97g~lU?2LirCX7zdIZCvKVNfjxm*kR60XV6)&XF zUmOW&m+QtD-WYwvYROHb_ZSgUgXuaO~O-6w%r`#96N5v z^^$=lq0Gb-W`C~DH2dNRh_fahZhTaM`$SrqX%;v&o_emT`=!u>A?Nn+k3!uzxwy!7 zOK>3+hD}S3fK+>SwDV{2N2K~Bv3rC|oBqD;kDqVj6L5kS1kCvo*2*v zI|$uI@l)iaXjNYY(#je3u!0>oBVs{U4RnE(K(H*+(4>tsi~D`h6{y1j_}#`kzrNnL zmn)!q16j}J6aM)Uu`5n%X>2U%(*n4D1LLJtdVS+&h9_-mY?y|f)zvQ4y@sN;^@>?| zj_NH3k)7K~59XCoFiBYBsE{ns%h7S<3#(6JLwzNRZpeSg|R^HJ0bUs)xLOWW20=e%MsX36?O+v#)2u={Db3@^l>kD_j~;%n497694d@* z*zdoy;B?15PPw=+{5twcdT7Q^uX^jRh>(ijh%K^1(xS152KKe#Qi4 z_p|Ys0t#ay0zHmNLHCsG^i&MTsdtyVjVfamv0=-=+Y)epu0N|hDYr7SA&Q6B)m+|l z4`RtLj=<>b--|;q1OB)F^}>=v6lLi=Ei7|`WC@NjBuntI0_BluJoZAvlvdfvb{ z96@48Ld4BNn`pF!`P9&6-EQP>5ijAOPwat~kE!e&`VXz_6s-a3sClzvve3&E4xzUW z&}Qo7GQS7AcE7*Su)on_EeH%7=0$jzV}(&>R4=954mF@-00%|W_Uvr-u5agY!0FFg z*OW^^Py7rXsdi7~#V!828qx&grx$%Jgu%nPAsjTU_t~Wq`c3NIO?xb6G>Nv;blH|C zE$<*I?ku_?5Dx;hFeB!H(Aig1p>hVm@?8%4I|+iB5iL0qS1fwm$P;Pxt5rXY88O*h z`ap4u)j!f3iQd3`lC(nX@27b4QbWW?5DOOcddyHan@%ITd6;69)~W$e*W1a@qL@S1 zkWxrBq-ebyA}P5Y`t*Lhh^IKyMyQqHx8b<(&)mK82tkwNcxmZZv60?q72izDUat~+ zj((Z#yTI;D2wFb8mV}Br|9ob8Zd8;`{V@Tp#o7g;RB4SZ8jk%bZS1+ zWC^Ly6Tq%dzqdKoRlQrgsz};EeNKj_e8~U7v|+aIlU(A@5?_>2G~3ckA!-6re{xcN z(`n1|lYyrIbJXefsa3VRn1=RS14V?>>doNl4HF-}L-a(BI2^``(h+P}#Jc<)5tVi6+eVJqwbp0dwV(!in8+ z(M!k>i|WlF*MtTdMi557f0row!ZOBGl3Mcs>ywr3=TNHLe#CD zTkB9^P{@ghw81|F%8_6np3^lBE{8o;uZ$dN#1Tdg7}?fjF35ajSJJBOR*DwY z&(01WAJ~q9totF-VBbl5qNsiD6Yrl!BCCm6XU*qleaA{*})9=`JU>j*4j+g!~ktY z(HoN=FE1+})hIQ;lQU4+?I|~%T5eE8`HBi(3{q~HXgR*A;uNN>Cwvz^!~>x-=g!oc zdjd$KQ)5@%&P$0>a@lhDn!qVW_j&EUdDgG|e);flZgIBCMb!a3%~W=8Ifo<21ua=B z*(LDfd?kbH^MVZMt=b{TEfCJ?EFX%!1k*b zuV;RjpHykZlLOH~-p5g_b=8Jm1Z;~xzC8l?F#51!zIBj)Z7k?L%T6drV(y3?oqnvk zf}|K(f<5TQdb#DBx_A4)-O3%3CN_(_rkzL<{d2gVZ6q>E2&uauG15Kj_)u(IW5n)0 zMH7hX<9P#0O0wdOJkm@jiX`ZM5D8@J_W;)XmF)c=6j(PFY#&i`eB^lqWFwg(0hwU> zOd(4%=f)*oXBJk-V1sjPZ_6i&uYx2+uv+PyScqUF-D~Yw5t3dj#fntpV4@7k!7NRy zK-&%Rc(^Zq=FuQFAE08O7{^!VIlontKr@@o9%Z8f^5A%hF%{uL^eSM496p+%ZTs+8 zh@z>YikIHOMF(K=@Tns-CqGJol~6LA1CBZQ5t}@ruV3oLPp^~AJw2^aH)zMN6dlo$ zYKV^r2efS&r4Nvnke~@P%e{xz=~lSD?SuCLQl-;%Uo8-GvwfeTSkDpfa1jW{*T(>d zc$(I-jbaP`F&Q<7O@p5>f{A;c1cp^a=34g5Ms+`VxMS4^CuGydXQd;?#$Bd><)l(X zcJNz^mwrkqRK#I6b=~q`XQOXBms;I~0W}(7_f#$sxf9jO5VCJN;S@3p)L&8cmk|Tc zvT8aT2jo`IPtK6-b`xP7cY5%6#jqvADVx&Qjj|dS>>?o2ApJnh94NwAh2ZXUG>sXQ z@;t7CC{eGZk1fHBP-M06DIYl8cAbgSc7V|6NGFv|a-HWa5icw4ctpRqtwX7u*LglCUt;vT3LGiisGp@dc zLj^+Ddn!~lO+?eYm_`%?6j9(p7k|$B&$3Tyi#)!?r4;?6ir>j(Pm!mwTx=q(dq2Nl z!pnYoK6eM(p9~XF6IQ4{^Hel9ymqD2R7DDxS;gyg;|U7#H_m%Zt}lGa{8eledqL)~BV7LL`Bu*~A;g~D!20bgc6 z>_Say7w;+nNu5^w8X=+Lx>JCg?SthFa2?4*v)UAyjvYLzfpsX*B247mwO%TIH{!PO z>b8~`U^0jhpw{P){G{jtc?&Hag54@Fz^_*#BVBi}*@90qt$vnMXRo?KOxT#2G1{M`ey0;mn0fZhDLi&(d&%TiGjSa*mJs z-lhyuQ&ljEM1fF^P)|AvFO(BsI3}v?$4@U5&|Op5BAK#v_xRviT}|PuR1i3V9m-re znVedhv|Kr{%F$0jyarOH`zckLg+qdy9tXz_;3X3i)7**3r1MCdRVj6FMnyWBl;|I9 zfqft>h9I`{2OFiOr5jJ2ltX6>kVs@`r9~X527&KE-J_N(|1~M2th91qa=mu$9pbPu z&;_@t;-D?9c})Q2@$WWD4vFS0of_cpA+O|I- z_|(NY2Z1}3A+%deSLN2$jS7dfWUlF)h>i7u1XS4(xq=%_rO1ozay^`BjfyxfTJ`4= z{O&pif^r_=U!6l1yIWfxH{?Gp@?2~qMgPru1rOhJJR}&VdF?esX1oX;s8iw9Um+gm z_%1}#Oqopf48^H>zJCey@O@mOkuMexFAcQC-gEGUGz{)9522Sya-hwJzz_8;J(K4U!uV2;@Qd90%q0 zVrh|I3{F)TfS{-P+whsucFUe)_piLGbCi5>lb%k7l`eH!%Lv>7)QLcmr*l%7_|4$q z1A=Hg4^cu)jBAGg5+P`383?U)fvuh^+XRX1gGj4g>sEzn{Tpu+RcPfE5VD;TnRA9G zwp%(CbF^X|!?ZNSUa)Ve+jSWMHANo%ye83p3k0W@LhS4xczShu>yC;eGc>fHZ-f;f zP9-JWD_5_+rBQ`rn2Xf-wnRKAj%)ot9p0D8(Jc2H7!k4iN2EzxNh z!+Ulb|8c^>;*I|t}d$??O!7>Rkv4&+y2^Ai%dgNp(;X^hdlIKCc&DCi+Mx$%kCf6Ckn_LO zFQ{LFb)elX?~#NMz0!4ki# zsgO#1^r4|s19QGpz#p#QO0974nBLM4U-8|PFSwevHR^`NA!1@~4q1s)u5Ih$0!)Cg zT4K3ybz>}tq`G=Z2`hJwntq|+>LeciTy^@9*x;JwUEuX99yYN`khq{F#vYuNAj0Pc z6-*7qT(XHpzX0ZLFzl?h9NvOnT*Ma?Bfmnq%l-k(j(E{&Ug?8~_guxKwKT6D3wG?X zb?){Q_B<067k6J{7JHXENKXRG<+J9wpt;QwFCLX^~vLT zALnfLnycuQ+r7;E3OosZ&vDsZo;&;hbl+Us)rP)u*Zy3rhH$!MyioGsoiM979M zW@PuP#t)Ub_$oLAZV0x*6g0D?4p+-%Pjd&BXc0x6VS_LDImdO6trtq2{{Rw1j z-f=)oK=lld%;jI6D#)#BjbP*XksR`Rm=?UlvF{LS9B zwRf#i^;JKhME-`o6^H?ZXc{|KI4i8uRur%`SlwiQDJ%M52=qzbe1C-%p9Kzu>o(0JWO+re zk6j0yDL3>UwQ<8u!$32bz9>x=qgHF1aLWt+7yT2F!OY^fIU;8|VqV*pkL|FP@KaQs z9JgC*IhewAQG=xL(sI_bdxEhd?#!!D*^lX+oV> zjlsjGYm>?ke?4$Nl_V@G0GXjrc>~gRU0QjEG6VX3A1Tnc`~KpIx_^j9-!D$~;WX)h zBLh&z_xYT0jC{gPz_6CV z@vVErfR%|V|D@&w*I$PVJ_~}QMtAv{qd>nUM?DxrZsh3c=JuUkNJ7?cBK@PJK*g>J z>WJ90g01owlPAiTI*23Z9TJAcuQq+@Q+^|^cCGMmrxq&7Ea7h+$WQDtY`me^m1i*>>M5!Lp#>q&@CaKo6+(Bd75bLvqifZ z6OVIt7tH574rM=p!1ArrhvD&2y;9ZvACKI8Gu}(~iiBm#vNBSKjLq&pw4sA{k_U*> zZ$0@&M#ij1ngu}SqRse5pcl09A4i8pJUl(`pO{@E#g2Cww5{KJA^%7aujzZ02{TRy z%vSeW-AyjpNoW0|@)?B62g$hm{=bxqNTGp~3RcMp(@?+pz+E&nV(|FBG;>r{CD+BE zAH_s)C0*QEA6#_@1GWM|)x_oP1b*L#uAnl=8?UP8Au2YFhW^-4j-i%8+K zl;a>Dj8RpgRRI-&k+1EpswM@)&5BOu#v@$;TA;*dAk*7+?k2{psD>spVOdR1eziNUh=9S-Mu?_pp4w4QX&-1k%Co0Kgmfq)|AKL;t# z-Er>al~frWOmnJ6xA9!zbuP?XGbDhH?U5Lb)peIAR$uK!RcgH!j8&jJ$qBP42g6O1 zzpaURs$Ic2VH#7%Zmo)B;L`AQ=W>_kuSoQ#@^_+NspdUb>QdV^oGf?Av9no#7}rla zbLVuW#--W8eLoRp5bs`51+ldGFC&#a(^oG@a4wQN9Z>skFKR~cY@`g=Zmx)d_RB(g zVA=|S_vV$y%u(DBGhH9vi+p^1rQu&f`F=ymO}TPFqrl@-vOUXIQx%)#IwgF$R>ov5 z*~0Q$RvTUH)2PKtNyyqY=Ae!{`$q;9WVx9L!^!Et@ZFaxR|N z?Ca+2=Qdf`fqwTh;am&}31K+(D>InjT*RE52ygdH3Nc3w{raVeXH@{j+5_(|Z-Sh! z>DLT_ykXYUNs9{ol2EVM>w|=nLnxXi2u)7HS)Um|cm>_7WV^4h(APZ!6a!F} zzioK@h(m?LodXYxdn1)W4JNOE-p{pS z^!Sa6_11bf_V@RHhM%Qf_#w}p92(?IkKW!~HtUp5Qb{!sK|_5^;lC^_#nQDfSH$xQ z+LP7t)Fv*=ZfW#g%?dFCvkba#ub{VBE>;HEehrU=*Fk5uDwcde>CLy|=iJ==rlxp) zzB4u&eOKDH=H#i+srQ=dbE`G_!Y8Cf%2L%)-RU#;B$_l~t5d?~J3fD=`?!$sff*qt zAMB&*Hf3g$76gj^5vJ>)(-0ArMD%}wy8WB^a;?R7UpTj5mtz<=krTLN8sJpMLp?QV z=h9*o1**a$&j3&iKM#IQFH60b=Mo9V#EqY{KvKG6wdUiufbT9rUNo5Xe<7G^>gh#c zvhV-oG41wW)gjKUC6ra%75>48F!64GYGbn%;CsT)#}|yX_CPt`1euYUTh8COHUHQ~ zI7O_?L>1*HSLitr$@vxe5bbeTur_2)i-QJy{%rjBU7mdw(q7I5` z6We{G0tA!3=yVGfd*bP8>hr)-y1#Xc42>K=O~Lio=;rtPL8pyav*t6&yC`27ljG%_ z{xsz8xa-_Hax#1@1l@;_ZNFvgEj82#hv8#Xh}kS5E{^E$x>T{1)Jz~JpQNINT`_Qv zjzUFfg}I_w=C}rh*$uG`{N0CA+X#pP%0Yv8yak;9%FK5_Me;5fu4k}jLB2+C0^|fi z&NI`lHJl+9iN5DvO~DVt>hI*bo=)7M-441L-ZI?SWVDT6mLf_Hd}FS~^AYP~sDY~8 ziZ6cMj2FLLD-9I1?B*l|C^Lhw$a&)929Rgl?FCaaGwdFrK4xn4RtYn8BONU)P@|8> z!s`7F8>OXYM=|iDo2+6!AzpOhX{ z`y0OB--&uJ_&)wS*}R|4I>oQK4p2EJ?Yrr4M>wj}UN;||o0PH~x>lkr~F z$adGA_cI38I#EGubeC)IJMoq$H;-?PIn7Tr-$7kZb<$#K!aIWzj_W=qmut;A7xN>U zWgaTmj7cQi{@%{(wCQB_qsMjUWfg`ykPna|UGILPP?E~+s^zmOntePd->N+JkBQq^ zwCFC(W>4-K@z8I|IJd$KBSF|f=rumuL$6bjPu^S0I+a;wxvAf~7JuMG5z;iVMQ_45 zwys(?X?AG%1;W_lS{KNG1YaE0S? ztvv0vw4!Qo7Tsn@yLGg0H4z5E+$-~Q<4eKD&UIc=Nh;of5P6xZ z_epCi!N$)lwM?*Pcj#o{p5n*~xstweZYUC*iu2 ziShc2^IlDX(@p18l{Jq8%WfIs^>eSqArRBUg@lBJ zky8J<$;#nKwLB}lT@w??_EnW{^+V$o^9BSa8rxcT+Ff;}o>khQpIQoM{d$RaOk-=0 z2rb{*pXl&?PVf_vr9z*ttN#AsDIvApb6ESR2J!$f7n1SPaj(sv^NR#w2gR!%@=(WbCkG?WCQ8N?oEWC;<5WrjGqdG0_ z4e?Jn_q4RM{8VxcZ<$sPxiMx`Ae_=|P*7>bx%hbOUD6uqGC$B;4xEd&VBQUic6F)3 zi112P3=hMDvl0pH8x}$AIjaZDm?kHw`Q_z~bzq@X>rc5WF29H~#kTiZ_w@8sHVhX! zLq}`nJ$=tZ#v=OU`0`gj))AhezPk7Z@G^~R?{0mN2GEb~>5nVhtvB;Bb~wX|iZ7Pc z%rH*K%anfVCH_)ZQ+vvsFtzJI?_8QY>FmNYKjyzRmt%!dGb@}vI!e7#!6Yxkm)|kV zZGHuD?cBXyJb2medZWwsky+#AX;EzTv%^hX9s14G(h@4}Q*w)?48bo%v+qj5Ci&t@ zvnZ-vWV@#@!^_N!v9$&LN&#SV`f2{igUFpPEc&zi}`-Q`JN%fgt*)m`FvqwD44!v!J_ zu-p_ilHSW1b|Q4inV;SOlQ*?{0AFRljJTv5x#(13bl&(L7*Y#`vNieta7ZLK{Sa#D z>`2)S%8g0tL5?IPd_EK*<2N>9YRQ@;1RZX`7f%29=u0aPDH$V;lef*n@y>%|$DMX5eAi=iEwoIO zblHE}7c)RGrVbnr%+;a_Hpe!mHcW4}x@C+lng<^5L|n4Z%gbAyp8m0H{j1&D5^8l@ zD1A>?o<`gA*poDbM`?4f;*$yuXu9l-p~94O3W3csS_F}$=S_J{o|vbGE^3t^Z;4PD zN?Oy`*PrgqP|1diZP_OpZ0_kq4jp-f^;oM9NQaRk^>!(`!J zSL{#XB@8|2LJ-x~PXuAiW(?hf3H*W7@{B77WPnC^*lcd*Ns;t3<#CnpWc*-xwk4Gw6iRQWZ+M&R(~Y;xaZz`|`e7o71;gdqmz(x0 z6S`dG{)OC}^Ua`x-?x`&5G9q~i#*85^)fS8F}dbEvn8)JY5XO5cKV&9J?zhtTDs-_ z1YY#kfmZAOCNH)hmCSPSwoj>~oB+p7P-x||{6XsBGAj>B7&?yeg5L5d^Yu>w0l6N2 zeiNf+KFMqI@3>L-r?0NxI}X6L@zq{2{;s@(fFD2a8J-f6VoDls_MGdCW*gh@6)U^F zao+p7Hss+_`*W>lzH9CTKQZAjL?eza&`ejGSTiHcrZhcQOf?N!oWJEkD$??wJjNdzVI$A`KFbhPrH_IwvCzYW`iI+@OBNR!1(h^Ifj zSug+QQwK27Qy+#pE3({>nPBAAz%7xO^0BVB)I2=rp>JQXwDJeZjQ^nhXH8 zFmcqH9dw@=^D1(^uwTx}{2qdgafa2?o2d_s(4i>G{;bUXVN*mG1oc|G|dT?4yp(yB2LBhRqT{DRSa#oIF-t4)YR&$)zd6)O1NeN50i)G>e@%R6WMX<80NMY_ zrc|H!Ua=ksQ2hs#;S4YXdST}D!Io&YwMT1ue%!P62M8jBS2^?zIHwBrRiI69;1L$I zVh=42zmTlok^c7!DS!CM<$31enARO?W4%YED&JuKt%j5bxjqpwCd*>YLoa zyX+G}1|mKQw=(lO=}SQ@U`l?=foWebctoj*75fVL9u+eh4?1$iczJ6G=Mo>5O=)q- z`y*#qGam)i(i^$=5gm9+HTW4vC1!m*#Sh31_6YR&T+EFP)8$aR#0oVy zq)5)|)v(dk5V;*N0Q+1d=Ucn=^p25D0?1wqfEfj?)f(c9GJ|~Qs!nnD-#Ab-Y+IS~ z(&i{1;!&aw7Ijnshk?a&-NkD{j!O~8Ca`~gPoqVerlw$v zwBl}oC`Eq*lgZMJ?Ccax$W@dbv6*Z7?I43~jW1_d<_aS-bNs=rvH0XJ;S%0Rt06p` zG~W)>E=p2i2Se|L0gb&K7oJ=s_rLJ4)T1XF&{-#@eHOv9?1s%?cz7L`lWx@EdQ^@61=z+d? zaYdWjYtZKg&5V`l?w42lC}?4SyBU_5W8HW$o+Yb&$6%Zss0|p;W61D6+bu71;r7~Y z{d>=7Hj5v(e+yg|2Q}Dg)=BVFEe$4eCNeTAjlMHv>tz4)?|;x?BF>rY$ZMg82^8+V zW=@IAL)>w>_9cNSxl7}Xb&ZXsW(|IZ`4BHc!^vo)_r|>u91erg_F8jl*zG>_i$xr# z?h=VZ;dFfNrzwJAlD)cwU(l4anM$I)i;FrQk4Nd3niU`K7n&_(67ZGqqC*kS`a7?n zv@iqW@9$@KdL#%FdxAI|PG9=;s2s65+y0a9*99u(d^$ce;7jyQ_5)8A0t;Lk_7#p# z4hhDXjkP*L0hQF=6B2A8)gh#W*Wf^&I%q91VAip|1k{^1Z&prw!f@_oJ_p+}4QkB18r|6ZnQE>%4|QUm`PLZz|-+J4Ym`S1}cGr@#yAvv6RyMj*KO zr~TQmQe0JXdbl=Ow>;OGAaZg-#08e7Ne4D;;-vldH0~>92JFuz#08dA=p7y&F1N>U zIATr!PWe$%2a7))%K-hr>Jl(%b+9vHJ|evlh}rcq)N4IFGZ-2a2`(4TVE)zD*LOK9 zN=oZa;8EEDK(9#prc=dKN*&*Z~?~qgoe|TLx$7igvKKqtJjrtV6+0gVYUjW4T$p$ z0JIbO-IFvbQPLU%}<08E=#;3Kqz(=B6M z8g)r%zM+!(vb*QCHldmBw;4)8)|oaNaM4dnU;1P(>tJstid$Mu?`VE&KO$|1#3?}V z#>&LHhu{o=1}gAmD}8w;N*aq;VU4QAQhj!&g}qlA&_R1|{6NTz7!~gOHSC_?sicoS zV*^k99isp;ghIRCv|^?bwdkjS@9OCN`IILmhE8OyT0YP-_lZ_7l3OvMDiAV(`=PrYva%j3V9>eEa z5kTe+qE7dyJY8Ks9`4wOE%c`2s(a1#kc0~w9H+c&+hnV2OKQr71MkK zLWis{pTz{f&{ut7JO>Eo5EvLZgX7}vRXIxFGrxUH?F2~YAW32YVIjag+9wwPq)>V4 z>GR1tdV0yZ#&+%cNSPDBS=Lg`KZjiwcW`rc{R}psS5DOibdCXWYiwEV9(~i_UoGzy zKEVLhB&jE=&WqrjIvd-)TzR**tG!l7+%uhDyNQ~YA^uO)% z0Rt>U&4!q5=Z^x;@~3WbwK%HJytJ^vd*ByeEtp_{cp*uA@iUFbyBG%-m)>zYZ#aRN zmmXlWzd#ZJA^}&md2qCgaajhP!vw^}^t*%KZ>WlHY~un?O~Ex>@aZ^kw}X3GMNqjp zAEkynuT(#9efI@@3!vq3F)g6cI0#gwD8T0wAh%3Xa{$zQe}RfwQlmEwQYd-F-^IlR z+PekB2q(^F*3v6|T7>l{PR2D264xdRP5KD9#!{f(cC$g*Bza~aXTtiP9Mu5TB&iL0 z<9+}E3)xx9OD_PI@?Xj2*R4nFDEkA}FUP1$X@aqZk$0XzM*KJ1IhKp7u;bNJ%4R_F za}Tx$)Q1iUje%KTuxMX>`{LrAo;U=AdYvT3Ayjv;izpIdmZzFRNa&CJG@TwMiJg(- z&PMBD^n^6r-Pl)h^18#ZvpTG&zGShYg_2^fOnWQZn$wkV}U0T1{=xU{#cg_WZXjK$K%&fXcqL8xowV6nG`aOgi)=i~G8^5XS+#Ova2$0q=~4Sf89e1d{JUDahc^`pk-h%cYDi!LwEMzwfOVKleC2wAkAlC?ZGF& z%TKx%3yb7G>&0cPJxGuL9HMRG_UGZBCnx(qC%IarHz0n&tu_7)|S>n!jHv-h5ilbpDq6#jDjVA@>uY(AXq9OBp@R8Sd{?$26DJ`#1E?EfLkpND@@<=;F0A=y6*|AQ_6_gQ6a^=~%0 zdb&IP5dmu}J{u<+sEsp>#3X@#G0ECW9A*!5viUC-$vDCOJBxtqi91<1+d(+Id8}=0 zEj*oI98$`%{|7w&wN;YuKcN1itYd4K$mX5uyr2F@fdffp{&DSHtl4|Bn9=ukpCx`#%PTUr-D(@b7;C zhJXJjrnw{;1KBM=6&|E`fsNrGL!Y6%zUh}QUl`(@V)PmQFtotEKmafTHP0uP}7&%m4pcKQ#X)BiAJ2y+PrtBI>9eEIt2-_c7)?*Lsf z5vX5*Af@m-wBJRV%#Fiz=BdPr0!2^a2d-yv7gSU);Z6{`~Oy?E5qSnHUln4*Y%!){F!Y1~5WXoC44g zb7l_)X~q^V6MmWR7e3wj|L|Wb!|^}Y86N$^h+kv_Kw-fP!~#If$6(B4$)LlK#&G6; zC&ShMSAb$5tA9Xg5dOsg@-z^@3;;QS9f&!gG&3|;{Da~@Q2ZB({s%XJ5&#fj0J|In U+D>(nEdT%j07*qoM6N<$g0@&8X#fBK literal 0 HcmV?d00001 diff --git a/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.ts b/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.ts index f1972da..025d9a6 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.ts @@ -1,5 +1,4 @@ import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; -import { RouterLink, RouterLinkActive } from '@angular/router'; import { Artist } from '../comic-artists/artist.model'; import { ComicArtistComponent } from '../comic-artist/comic-artist.component'; import { ArtistService } from '../comic-artists/artist.service'; diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/artist.model.ts b/kontor-angular/src/app/kontor/comic/comic-artists/artist.model.ts index 8529fa7..9a7ec9f 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/artist.model.ts +++ b/kontor-angular/src/app/kontor/comic/comic-artists/artist.model.ts @@ -2,3 +2,9 @@ export interface Artist { id: string; name: string; } + +export interface ArtistDetails { + id: string; + name: string; + weblink: string; +} \ No newline at end of file diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/artist.service.ts b/kontor-angular/src/app/kontor/comic/comic-artists/artist.service.ts index 7b29420..10a61e4 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/artist.service.ts +++ b/kontor-angular/src/app/kontor/comic/comic-artists/artist.service.ts @@ -2,7 +2,7 @@ import { inject, Injectable, signal } from "@angular/core"; import { HttpClient } from "@angular/common/http"; import { catchError, map, throwError } from "rxjs"; import { ErrorService } from "../../../shared/error.service"; -import { Artist } from "./artist.model"; +import { Artist, ArtistDetails } from "./artist.model"; @Injectable({ providedIn: 'root', @@ -18,6 +18,10 @@ export class ArtistService { return this.fetchArtists('http://127.0.0.1:8800/api/comics/artists', 'Someting went wrong fetching artists. Please try again later-'); } + loadArtistDetails(artistId: string | null) { + return this.fetchArtistDetails('http://127.0.0.1:8800/api/comics/artists/' + artistId, 'Someting went wrong fetching comic artists. Please try again later.'); + } + private fetchArtists(url: string, errorMessage: string) { return this.httpClient.get(url).pipe( map((resData) => resData), @@ -27,4 +31,17 @@ export class ArtistService { }) ); } + + private fetchArtistDetails(url: string, errorMessage: string) { + return this.httpClient.get(url).pipe( + map((resData) => { + console.log(resData); + return resData; + }), + catchError((error) => { + console.log(error); + return throwError(() => new Error(errorMessage)); + }) + ); + } } diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html index 792b214..736d4a3 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html @@ -4,6 +4,11 @@
    -

    Artist Details

    + @if (artist()) { +

    {{ artist().name }}

    + {{ artist().name }} + } @else { +

    Artist Details

    + }
diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.ts b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.ts index d5e70a2..43cd7d7 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.ts @@ -1,5 +1,8 @@ -import { Component } from '@angular/core'; +import { Component, inject, input } from '@angular/core'; import { ComicArtistsListComponent } from '../comic-artists-list/comic-artists-list.component'; +import { ArtistDetails } from './artist.model'; +import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router'; +import { ArtistService } from './artist.service'; @Component({ selector: 'app-comic-artists', @@ -8,5 +11,13 @@ import { ComicArtistsListComponent } from '../comic-artists-list/comic-artists-l styleUrl: './comic-artists.component.css' }) export class ComicArtistsComponent { - + artist = input.required(); } + +export const artistResolver: ResolveFn = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => { + const artistService = inject(ArtistService); + const artistId = route.paramMap.get('artistId'); + const artistDetails = artistService.loadArtistDetails(artistId); + console.log(artistDetails); + return artistDetails; +}; diff --git a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts index 465a5d3..06d5f0d 100644 --- a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts +++ b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts @@ -1,5 +1,5 @@ import { Routes } from "@angular/router"; -import { ComicArtistsComponent } from "../comic-artists/comic-artists.component"; +import { artistResolver, ComicArtistsComponent } from "../comic-artists/comic-artists.component"; import { ComicPublishersComponent } from './../comic-publishers/comic-publishers.component'; import { ComicComicsComponent, comicResolver } from "../comic-comics/comic-comics.component"; @@ -19,10 +19,10 @@ export const comicRoutes: Routes = [ path: 'publisher', component: ComicPublishersComponent }, - // { - // path: 'publishers/:publisherId', - // component: PublishersComponent, - // }, + { + path: 'publishers/:publisherId', + component: ComicPublishersComponent, + }, { path: 'artist', component: ComicArtistsComponent @@ -30,5 +30,8 @@ export const comicRoutes: Routes = [ { path: 'artist/:artistId', component: ComicArtistsComponent, + resolve: { + artist: artistResolver + } }, ]; diff --git a/kontor-angular/src/app/kontor/media/media-file/media-file.component.css b/kontor-angular/src/app/kontor/media/media-file/media-file.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/media/media-file/media-file.component.html b/kontor-angular/src/app/kontor/media/media-file/media-file.component.html new file mode 100644 index 0000000..b735566 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-file/media-file.component.html @@ -0,0 +1,17 @@ +
+ +
diff --git a/kontor-angular/src/app/kontor/media/media-file/media-file.component.spec.ts b/kontor-angular/src/app/kontor/media/media-file/media-file.component.spec.ts new file mode 100644 index 0000000..4050101 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-file/media-file.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MediaFileComponent } from './media-file.component'; + +describe('MediaFileComponent', () => { + let component: MediaFileComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MediaFileComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MediaFileComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/media/media-file/media-file.component.ts b/kontor-angular/src/app/kontor/media/media-file/media-file.component.ts new file mode 100644 index 0000000..924844b --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-file/media-file.component.ts @@ -0,0 +1,13 @@ +import { Component, input } from '@angular/core'; +import { MediaFile } from '../media-files/media-file.model'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-media-file', + imports: [RouterLink, RouterLinkActive], + templateUrl: './media-file.component.html', + styleUrl: './media-file.component.css' +}) +export class MediaFileComponent { + mediafile = input.required(); +} diff --git a/kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.css b/kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.css new file mode 100644 index 0000000..d95c44d --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.css @@ -0,0 +1,14 @@ +ul { + list-style: none; + margin: 0; + padding: 0; + display: flex; + gap: 0.5rem; + overflow: auto; +} + +@media (min-width: 768px) { + ul { + flex-direction: column; + } +} diff --git a/kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.html b/kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.html new file mode 100644 index 0000000..1688d6b --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.html @@ -0,0 +1,7 @@ +
    + @for (mediafile of files(); track mediafile.id) { +
  • + +
  • + } +
\ No newline at end of file diff --git a/kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.spec.ts b/kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.spec.ts new file mode 100644 index 0000000..a97b136 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MediaFilesListComponent } from './media-files-list.component'; + +describe('MediaFilesListComponent', () => { + let component: MediaFilesListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MediaFilesListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MediaFilesListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.ts b/kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.ts new file mode 100644 index 0000000..eac3322 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-files-list/media-files-list.component.ts @@ -0,0 +1,37 @@ +import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; +import { MediaFileComponent } from '../media-file/media-file.component'; +import { MediaFileService } from '../media-files/media-file.service'; +import { MediaFile } from '../media-files/media-file.model'; + +@Component({ + selector: 'app-media-files-list', + imports: [MediaFileComponent], + templateUrl: './media-files-list.component.html', + styleUrl: './media-files-list.component.css' +}) +export class MediaFilesListComponent implements OnInit { + files = signal([]); + isFetching = signal(false); + error = signal(''); + private mediaFileService = inject(MediaFileService); + private destroyRef = inject(DestroyRef); + + ngOnInit() { + this.isFetching.set(true); + const subscription = this.mediaFileService.loadFiles().subscribe({ + next: (files) => { + this.files.set(files); + }, + 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/kontor/media/media-files/media-file.model.ts b/kontor-angular/src/app/kontor/media/media-files/media-file.model.ts new file mode 100644 index 0000000..9418003 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-files/media-file.model.ts @@ -0,0 +1,11 @@ +import { StreamingResourceOptions } from "@angular/core"; + +export interface MediaFile { + id: string; + title: string; + file_name: string; + cloud_link: string; + url: string; + review: boolean; + should_download: boolean; +} \ No newline at end of file diff --git a/kontor-angular/src/app/kontor/media/media-files/media-file.service.ts b/kontor-angular/src/app/kontor/media/media-files/media-file.service.ts new file mode 100644 index 0000000..96e24e7 --- /dev/null +++ b/kontor-angular/src/app/kontor/media/media-files/media-file.service.ts @@ -0,0 +1,30 @@ +import { inject, Injectable, signal } from "@angular/core"; +import { ErrorService } from "../../../shared/error.service"; +import { HttpClient } from "@angular/common/http"; +import { MediaFile } from "./media-file.model"; +import { catchError, map, throwError } from "rxjs"; + +@Injectable({ + providedIn: 'root', +}) +export class MediaFileService { + private errorService = inject(ErrorService); + private httpClient = inject(HttpClient); + private files = signal([]); + + loadedFiles = this.files.asReadonly(); + + loadFiles() { + return this.fetchMediaFiles('http://127.0.0.1:8800/api/media/files', 'Someting went wrong fetching artists. Please try again later-'); + } + + private fetchMediaFiles(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/kontor/media/media-files/media-files.component.css b/kontor-angular/src/app/kontor/media/media-files/media-files.component.css index e69de29..a997f58 100644 --- a/kontor-angular/src/app/kontor/media/media-files/media-files.component.css +++ b/kontor-angular/src/app/kontor/media/media-files/media-files.component.css @@ -0,0 +1,5 @@ +.grid-container { + display: grid; + grid-template-columns: 1fr 1fr; + grid-gap: 20px; +} diff --git a/kontor-angular/src/app/kontor/media/media-files/media-files.component.html b/kontor-angular/src/app/kontor/media/media-files/media-files.component.html index 367cd62..ac8ed9f 100644 --- a/kontor-angular/src/app/kontor/media/media-files/media-files.component.html +++ b/kontor-angular/src/app/kontor/media/media-files/media-files.component.html @@ -1 +1,7 @@ -

media-files works!

+
+
+ +
+
+
+
diff --git a/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts b/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts index 58d983c..06fbc0e 100644 --- a/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts +++ b/kontor-angular/src/app/kontor/media/media-files/media-files.component.ts @@ -1,8 +1,9 @@ import { Component } from '@angular/core'; +import { MediaFilesListComponent } from '../media-files-list/media-files-list.component'; @Component({ selector: 'app-media-files', - imports: [], + imports: [MediaFilesListComponent], templateUrl: './media-files.component.html', styleUrl: './media-files.component.css' }) diff --git a/kontor-angular/src/app/kontor/media/media-section/media-section.routes.ts b/kontor-angular/src/app/kontor/media/media-section/media-section.routes.ts index 9311eed..8214e84 100644 --- a/kontor-angular/src/app/kontor/media/media-section/media-section.routes.ts +++ b/kontor-angular/src/app/kontor/media/media-section/media-section.routes.ts @@ -8,12 +8,24 @@ export const mediaRoutes: Routes = [ path: 'file', component: MediaFilesComponent }, + { + path: 'file/:fileId', + component: MediaFilesComponent, + }, { path: 'actor', component: MediaActorsComponent }, + { + path: 'actor/:actorId', + component: MediaActorsComponent, + }, { path: 'video', component: MediaVideosComponent }, -]; \ No newline at end of file + { + path: 'video/:videoId', + component: MediaVideosComponent, + }, +]; diff --git a/kontor-api/src/apis/version1/comic.py b/kontor-api/src/apis/version1/comic.py index a4afb7b..4b2abde 100644 --- a/kontor-api/src/apis/version1/comic.py +++ b/kontor-api/src/apis/version1/comic.py @@ -1,13 +1,15 @@ -from typing import List, AnyStr +from typing import List from fastapi import APIRouter, HTTPException, status from src.apis.utils import SessionDep from src.core.log_conf import logger from src.db.repository.comics.artist import get_artist_details -from src.db.repository.comics.comic import list_comics, get_issue_details -from src.schema.comics.comic import ComicResponse, ComicDetailsResponse, get_comic_details, get_short_info -from src.schema.comics.artist import ArtistCreation, ArtistDetailResponse, ArtistResponse +from src.db.repository.comics.comic import get_comic_details, get_short_info, list_comics, get_issue_details +from src.schema.comics.artist_details import ArtistDetailResponse +from src.schema.comics.comic import ComicResponse +from src.schema.comics.artist import ArtistCreation, ArtistResponse from src.db.models.comic import Comic, Artist, Issue +from src.schema.comics.comic_details import ComicDetailsResponse from src.schema.comics.issue import IssueDetailsResponse router = APIRouter() @@ -23,7 +25,7 @@ def get_all_comics(db: SessionDep) -> List[ComicResponse]: return results @router.get("/comics/{comic_id}", response_model=ComicDetailsResponse) -def get_comic(comic_id: AnyStr, db: SessionDep) -> ComicDetailsResponse: +def get_comic(comic_id: str, db: SessionDep) -> ComicDetailsResponse: comic = db.get(Comic, comic_id) if comic is None: raise HTTPException(status_code=404, detail="Comic could not be found") @@ -41,7 +43,7 @@ def get_all_artists(db: SessionDep) -> List[ArtistResponse]: return results @router.get("/artists/{artist_id}", response_model=ArtistDetailResponse) -def get_artist(artist_id: AnyStr, db: SessionDep) -> ArtistDetailResponse: +def get_artist(artist_id: str, db: SessionDep) -> ArtistDetailResponse: artist = db.get(Artist, artist_id) if artist is None: raise HTTPException(status_code=404, detail="Artist could not be found") @@ -67,4 +69,3 @@ def get_issues(db: SessionDep) -> List[IssueDetailsResponse]: for issue in issues: results.append(get_issue_details(issue)) return results - diff --git a/kontor-api/src/db/repository/comics/artist.py b/kontor-api/src/db/repository/comics/artist.py index 8dda467..80c328a 100644 --- a/kontor-api/src/db/repository/comics/artist.py +++ b/kontor-api/src/db/repository/comics/artist.py @@ -1,19 +1,29 @@ +from typing import List from src.db.models.comic import Artist -from src.schema.comics.artist import ArtistDetailResponse +from src.schema.comics.artist_details import ArtistDetailResponse, ArtistWorktypeComicResponse +from src.schema.comics.comic import ComicResponse +from src.schema.comics.worktype import WorktypeResponse def get_artist_details(artist: Artist) -> ArtistDetailResponse: - works = {} + works: List[ArtistWorktypeComicResponse] = [] + works_map = {} for work in artist.comic_works: - work_type = work.work_type.name - comic_title = work.comic.title - if work_type in works: - works[work_type].append(comic_title) + worktype_id = work.work_type.id + if worktype_id in works_map: + comic = ComicResponse(id=work.comic.id, title=work.comic.title, completed=work.comic.completed) + works_map[worktype_id].comics.append(comic) else: - works[work_type] = [comic_title] + works_map[worktype_id] = ArtistWorktypeComicResponse( + worktype=WorktypeResponse(id=worktype_id, name=work.work_type.name), + comics=[ComicResponse(id=work.comic.id, title=work.comic.title, completed=work.comic.completed)] + ) + for value in works_map.values(): + works.append(value) response = ArtistDetailResponse( id=artist.id, name=artist.name, + weblink=artist.weblink, works=works ) return response diff --git a/kontor-api/src/db/repository/comics/comic.py b/kontor-api/src/db/repository/comics/comic.py index 0ff87b4..315a59f 100644 --- a/kontor-api/src/db/repository/comics/comic.py +++ b/kontor-api/src/db/repository/comics/comic.py @@ -1,11 +1,15 @@ -from typing import List, Type, AnyStr +from typing import Dict, List from sqlalchemy.orm import Session from src.core.log_conf import logger from src.db.models.comic import Comic, Issue -from src.schema.comics.comic import ComicSchema +from src.schema.comics.artist import ArtistResponse +from src.schema.comics.comic import ComicResponse, ComicSchema +from src.schema.comics.comic_details import ComicDetailsResponse, ComicWorktypeArtistResponse from src.schema.comics.issue import IssueDetailsResponse +from src.schema.comics.volume import VolumeResponse +from src.schema.comics.worktype import WorktypeResponse def list_comics(db: Session) -> List[Comic]: @@ -25,7 +29,48 @@ def get_issue_details(issue: Issue) -> IssueDetailsResponse: return response -def update_comic(comic: ComicSchema, comic_id: AnyStr, db: Session) -> type[Comic] | None: +def update_comic(comic: ComicSchema, comic_id: str, db: Session) -> type[Comic] | None: logger.info(f"update_comic: {comic} with {comic_id}") comic = db.get(Comic, comic_id) # type: ignore return comic # type: ignore + +def get_short_info(comic: Comic) -> ComicResponse: + response = ComicResponse( + id=comic.id, + title=str(comic.title), + completed=bool(comic.completed == 1) + ) + return response + +def get_comic_details(comic: Comic) -> ComicDetailsResponse: + volumes: List[VolumeResponse] = [] + for volume in comic.volumes: + volumes.append(VolumeResponse(id=volume.id, name=volume.name)) + works: List[ComicWorktypeArtistResponse] = [] + works_map: Dict[str, ComicWorktypeArtistResponse] = {} + for work in comic.comic_works: + worktype_id = work.work_type.id + if worktype_id in works_map: + artist = ArtistResponse(id=work.artist.id, name=work.artist.name) + works_map[worktype_id].artists.append(artist) + logger.info(f"add artist to response map: {artist} -> {works_map}") + print(f"add artist to response map: {artist} -> {works_map}") + else: + works_map[worktype_id] = ComicWorktypeArtistResponse( + worktype=WorktypeResponse(id=worktype_id, name=work.work_type.name), + artists=[ArtistResponse(id=work.artist.id, name=work.artist.name)] + ) + for value in works_map.values(): + works.append(value) + response = ComicDetailsResponse( + id=comic.id, + created=str(comic.created_date), + title=str(comic.title), + completed=bool(comic.completed), + current_order=bool(comic.current_order), + weblink=str(comic.weblink), + publisher=comic.publisher.name, + volumes=volumes, + works=works + ) + return response diff --git a/kontor-api/src/schema/comics/artist.py b/kontor-api/src/schema/comics/artist.py index 48d6210..4a967d4 100644 --- a/kontor-api/src/schema/comics/artist.py +++ b/kontor-api/src/schema/comics/artist.py @@ -1,9 +1,6 @@ -from typing import List, Dict - from pydantic import BaseModel - class ArtistCreation(BaseModel): id: str name: str @@ -11,9 +8,3 @@ class ArtistCreation(BaseModel): class ArtistResponse(BaseModel): id: str name: str - -class ArtistDetailResponse(BaseModel): - id: str - name: str - weblink: str - works: Dict[str, List[str]] diff --git a/kontor-api/src/schema/comics/artist_details.py b/kontor-api/src/schema/comics/artist_details.py new file mode 100644 index 0000000..cd03ca2 --- /dev/null +++ b/kontor-api/src/schema/comics/artist_details.py @@ -0,0 +1,16 @@ +from typing import List +from pydantic import BaseModel + +from src.schema.comics.comic import ComicResponse +from src.schema.comics.worktype import WorktypeResponse + + +class ArtistWorktypeComicResponse(BaseModel): + worktype: WorktypeResponse + comics: List[ComicResponse] + +class ArtistDetailResponse(BaseModel): + id: str + name: str + weblink: str + works: List[ArtistWorktypeComicResponse] diff --git a/kontor-api/src/schema/comics/comic.py b/kontor-api/src/schema/comics/comic.py index 784410d..a57c7ff 100644 --- a/kontor-api/src/schema/comics/comic.py +++ b/kontor-api/src/schema/comics/comic.py @@ -1,12 +1,6 @@ -from typing import List, Dict, Optional - +from typing import Optional from pydantic import BaseModel, AnyUrl - from src.core.log_conf import logger -from src.db.models.comic import Comic -from src.schema.comics.artist import ArtistResponse -from src.schema.comics.volume import VolumeResponse -from src.schema.comics.worktype import WorktypeResponse class ComicResponse(BaseModel): @@ -15,70 +9,9 @@ class ComicResponse(BaseModel): completed: bool - -class ComicWorktypeArtistResponse(BaseModel): - worktype: WorktypeResponse - artists: List[ArtistResponse] - - -class ComicDetailsResponse(BaseModel): - id: str - created: str - title: str - completed : bool - current_order : bool - weblink: str - publisher: str - volumes: List[VolumeResponse] - works: List[ComicWorktypeArtistResponse] - - class ComicSchema(BaseModel): id: str title: str weblink: Optional[AnyUrl] completed: Optional[bool] current_order: Optional[bool] - - -def get_short_info(comic: Comic) -> ComicResponse: - response = ComicResponse( - id=comic.id, - title=str(comic.title), - completed=bool(comic.completed == 1) - ) - return response - - -def get_comic_details(comic: Comic) -> ComicDetailsResponse: - volumes: List[VolumeResponse] = [] - for volume in comic.volumes: - volumes.append(VolumeResponse(id=volume.id, name=volume.name)) - works: List[ComicWorktypeArtistResponse] = [] - works_map: Dict[str, ComicWorktypeArtistResponse] = {} - for work in comic.comic_works: - worktype_id = work.work_type.id - if worktype_id in works_map: - artist = ArtistResponse(id=work.artist.id, name=work.artist.name) - works_map[worktype_id].artists.append(artist) - logger.info(f"add artist to response map: {artist} -> {works_map}") - print(f"add artist to response map: {artist} -> {works_map}") - else: - works_map[worktype_id] = ComicWorktypeArtistResponse( - worktype=WorktypeResponse(id=worktype_id, name=work.work_type.name), - artists=[ArtistResponse(id=work.artist.id, name=work.artist.name)] - ) - for value in works_map.values(): - works.append(value) - response = ComicDetailsResponse( - id=comic.id, - created=str(comic.created_date), - title=str(comic.title), - completed=bool(comic.completed), - current_order=bool(comic.current_order), - weblink=str(comic.weblink), - publisher=comic.publisher.name, - volumes=volumes, - works=works - ) - return response diff --git a/kontor-api/src/schema/comics/comic_details.py b/kontor-api/src/schema/comics/comic_details.py new file mode 100644 index 0000000..99411b7 --- /dev/null +++ b/kontor-api/src/schema/comics/comic_details.py @@ -0,0 +1,23 @@ +from typing import List +from pydantic import BaseModel + +from src.schema.comics.artist import ArtistResponse +from src.schema.comics.volume import VolumeResponse +from src.schema.comics.worktype import WorktypeResponse + + +class ComicWorktypeArtistResponse(BaseModel): + worktype: WorktypeResponse + artists: List[ArtistResponse] + + +class ComicDetailsResponse(BaseModel): + id: str + created: str + title: str + completed : bool + current_order : bool + weblink: str + publisher: str + volumes: List[VolumeResponse] + works: List[ComicWorktypeArtistResponse] -- 2.18.0 From 2534c67a5e2824e3e83e55f2b65a1633bdefe7d5 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Mon, 22 Sep 2025 14:55:38 +0200 Subject: [PATCH 16/20] moved interface to common place --- .../comic-artist/comic-artist.component.ts | 2 +- .../comic-artists-list.component.ts | 2 +- .../comic/comic-artists/artist.model.ts | 10 -------- .../comic/comic-artists/artist.service.ts | 2 +- .../comic-artists/comic-artists.component.css | 8 +++++++ .../comic-artists.component.html | 10 ++++++++ .../comic-artists/comic-artists.component.ts | 6 +++-- .../comic-comic/comic-comic.component.ts | 2 +- .../comic-comics-list.component.ts | 2 +- .../comic-comics/comic-comics.component.ts | 2 +- .../comic/comic-comics/comic.service.ts | 2 +- .../comic-worktype.component.css | 0 .../comic-worktype.component.html | 5 ++++ .../comic-worktype.component.spec.ts | 23 ++++++++++++++++++ .../comic-worktype.component.ts | 13 ++++++++++ .../comic/{comic-comics => }/comic.model.ts | 24 +++++++++++++++++++ 16 files changed, 94 insertions(+), 19 deletions(-) delete mode 100644 kontor-angular/src/app/kontor/comic/comic-artists/artist.model.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.css create mode 100644 kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.html create mode 100644 kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.ts rename kontor-angular/src/app/kontor/comic/{comic-comics => }/comic.model.ts (51%) diff --git a/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.ts b/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.ts index b24e6de..99a7938 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-artist/comic-artist.component.ts @@ -1,5 +1,5 @@ import { Component, input } from '@angular/core'; -import { Artist } from '../comic-artists/artist.model'; +import { Artist } from '../comic.model'; import { RouterLink, RouterLinkActive } from '@angular/router'; @Component({ diff --git a/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.ts b/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.ts index 025d9a6..44e22cc 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-artists-list/comic-artists-list.component.ts @@ -1,5 +1,5 @@ import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; -import { Artist } from '../comic-artists/artist.model'; +import { Artist } from '../comic.model'; import { ComicArtistComponent } from '../comic-artist/comic-artist.component'; import { ArtistService } from '../comic-artists/artist.service'; diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/artist.model.ts b/kontor-angular/src/app/kontor/comic/comic-artists/artist.model.ts deleted file mode 100644 index 9a7ec9f..0000000 --- a/kontor-angular/src/app/kontor/comic/comic-artists/artist.model.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface Artist { - id: string; - name: string; -} - -export interface ArtistDetails { - id: string; - name: string; - weblink: string; -} \ No newline at end of file diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/artist.service.ts b/kontor-angular/src/app/kontor/comic/comic-artists/artist.service.ts index 10a61e4..a755f91 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/artist.service.ts +++ b/kontor-angular/src/app/kontor/comic/comic-artists/artist.service.ts @@ -2,7 +2,7 @@ import { inject, Injectable, signal } from "@angular/core"; import { HttpClient } from "@angular/common/http"; import { catchError, map, throwError } from "rxjs"; import { ErrorService } from "../../../shared/error.service"; -import { Artist, ArtistDetails } from "./artist.model"; +import { Artist, ArtistDetails } from "../comic.model"; @Injectable({ providedIn: 'root', diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css index 03c2857..6825193 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css @@ -2,4 +2,12 @@ display: grid; grid-template-columns: 1fr 1fr; grid-gap: 20px; +} +section { +margin-left: 10px; +padding: 10px; +} +article { + margin-left: 10px; + padding: 5px; } \ No newline at end of file diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html index 736d4a3..1d79cc3 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html @@ -7,6 +7,16 @@ @if (artist()) {

{{ artist().name }}

{{ artist().name }} + @for (work of artist().works; track work.worktype.id) { +
+ + @for (comic of work.comics; track comic.id) { +
+ +
+ } +
+ } } @else {

Artist Details

} diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.ts b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.ts index 43cd7d7..9542c18 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.ts @@ -1,12 +1,14 @@ import { Component, inject, input } from '@angular/core'; import { ComicArtistsListComponent } from '../comic-artists-list/comic-artists-list.component'; -import { ArtistDetails } from './artist.model'; import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router'; import { ArtistService } from './artist.service'; +import { ComicComicComponent } from "../comic-comic/comic-comic.component"; +import { ComicWorktypeComponent } from "../comic-worktype/comic-worktype.component"; +import { ArtistDetails } from '../comic.model'; @Component({ selector: 'app-comic-artists', - imports: [ComicArtistsListComponent], + imports: [ComicArtistsListComponent, ComicComicComponent, ComicWorktypeComponent], templateUrl: './comic-artists.component.html', styleUrl: './comic-artists.component.css' }) diff --git a/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.ts b/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.ts index 5508e11..ad24f26 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-comic/comic-comic.component.ts @@ -1,5 +1,5 @@ import { Component, input } from '@angular/core'; -import { Comic } from '../comic-comics/comic.model'; +import { Comic } from '../comic.model'; import { RouterLink, RouterLinkActive } from '@angular/router'; @Component({ diff --git a/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.ts b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.ts index ec94c71..057306c 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-comics-list/comic-comics-list.component.ts @@ -1,5 +1,5 @@ import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; -import { Comic } from '../comic-comics/comic.model'; +import { Comic } from '../comic.model'; import { ComicService } from '../comic-comics/comic.service'; import { ComicComicComponent } from "../comic-comic/comic-comic.component"; diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts index 3c15733..89a983f 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts @@ -1,6 +1,6 @@ import { Component, inject, input } from '@angular/core'; import { ComicComicsListComponent } from "../comic-comics-list/comic-comics-list.component"; -import { ComicDetails } from './comic.model'; +import { ComicDetails } from '../comic.model'; import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router'; import { ComicService } from './comic.service'; diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic.service.ts b/kontor-angular/src/app/kontor/comic/comic-comics/comic.service.ts index 9ba608f..76a8d35 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics/comic.service.ts +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic.service.ts @@ -1,6 +1,6 @@ import { HttpClient } from "@angular/common/http"; import { inject, Injectable, signal } from "@angular/core"; -import { Comic, ComicDetails } from "./comic.model"; +import { Comic, ComicDetails } from "../comic.model"; import { catchError, map, throwError } from "rxjs"; @Injectable({ diff --git a/kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.css b/kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.html b/kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.html new file mode 100644 index 0000000..a9709ce --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.html @@ -0,0 +1,5 @@ + diff --git a/kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.spec.ts new file mode 100644 index 0000000..88c4876 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComicWorktypeComponent } from './comic-worktype.component'; + +describe('ComicWorktypeComponent', () => { + let component: ComicWorktypeComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ComicWorktypeComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ComicWorktypeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.ts b/kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.ts new file mode 100644 index 0000000..260ad68 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-worktype/comic-worktype.component.ts @@ -0,0 +1,13 @@ +import { Component, input } from '@angular/core'; +import { RouterLink, RouterLinkActive } from '@angular/router'; +import { Worktype } from '../comic.model'; + +@Component({ + selector: 'app-comic-worktype', + imports: [RouterLink, RouterLinkActive], + templateUrl: './comic-worktype.component.html', + styleUrl: './comic-worktype.component.css' +}) +export class ComicWorktypeComponent { + worktype = input.required(); +} diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic.model.ts b/kontor-angular/src/app/kontor/comic/comic.model.ts similarity index 51% rename from kontor-angular/src/app/kontor/comic/comic-comics/comic.model.ts rename to kontor-angular/src/app/kontor/comic/comic.model.ts index 98bdc10..ecbb790 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics/comic.model.ts +++ b/kontor-angular/src/app/kontor/comic/comic.model.ts @@ -1,3 +1,15 @@ + + +export interface Artist { + id: string; + name: string; +} + +export interface Worktype { + id: string; + name: string; +} + export interface Comic { id: string; title: string; @@ -20,3 +32,15 @@ export interface ComicDetails { name: string, ]; } + +export interface ArtistWorktypeComics { + worktype: Worktype; + comics: Comic[]; +} + +export interface ArtistDetails { + id: string; + name: string; + weblink: string; + works: ArtistWorktypeComics[]; +} -- 2.18.0 From 0db55e9ba71cea9d2fa953372d43b3164de9b45c Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Tue, 23 Sep 2025 17:08:46 +0200 Subject: [PATCH 17/20] added issue works on artist details --- .../comic-artists/comic-artists.component.css | 9 +++-- .../comic-artists.component.html | 36 ++++++++++++------- .../src/app/kontor/comic/comic.model.ts | 21 ++++++++++- kontor-api/src/db/repository/comics/artist.py | 24 +++++++------ .../src/schema/comics/artist_details.py | 8 ++++- kontor-api/src/schema/comics/issue.py | 7 ++-- 6 files changed, 75 insertions(+), 30 deletions(-) diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css index 6825193..4008df7 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.css @@ -4,10 +4,13 @@ grid-gap: 20px; } section { -margin-left: 10px; -padding: 10px; + margin-left: 10px; + padding: 10px; + background-color: darkgrey; + border-radius: 10px; + margin-bottom: 10px; } article { margin-left: 10px; padding: 5px; -} \ No newline at end of file +} diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html index 1d79cc3..94bf2b1 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html @@ -5,18 +5,30 @@
@if (artist()) { -

{{ artist().name }}

- {{ artist().name }} - @for (work of artist().works; track work.worktype.id) { -
- - @for (comic of work.comics; track comic.id) { -
- -
- } -
- } +
+

{{ artist().name }}

+ {{ artist().name }} +
+ @for (work of artist().comic_works; track work.worktype.id) { +
+ + @for (comic of work.comics; track comic.id) { +
+ +
+ } +
+ } + @for (work of artist().issue_works; track work.worktype.id) { +
+ + @for (issue of work.issues; track issue.id) { +
+ +
+ } +
+ } } @else {

Artist Details

} diff --git a/kontor-angular/src/app/kontor/comic/comic.model.ts b/kontor-angular/src/app/kontor/comic/comic.model.ts index ecbb790..70df33b 100644 --- a/kontor-angular/src/app/kontor/comic/comic.model.ts +++ b/kontor-angular/src/app/kontor/comic/comic.model.ts @@ -16,6 +16,20 @@ export interface Comic { completed: boolean; } +export interface Volume { + id: string; + name: string; +} + +export interface Issue { + id: string; + issue_number: string; + in_stock: boolean; + is_read: boolean; + comic: Comic; + volume: Volume | undefined + +} export interface ComicWork { worktype: string; @@ -38,9 +52,14 @@ export interface ArtistWorktypeComics { comics: Comic[]; } +export interface ArtistWorktypeIssues { + worktype: Worktype; + issues: Issue[]; +} export interface ArtistDetails { id: string; name: string; weblink: string; - works: ArtistWorktypeComics[]; + comic_works: ArtistWorktypeComics[]; + issue_works: ArtistWorktypeIssues[]; } diff --git a/kontor-api/src/db/repository/comics/artist.py b/kontor-api/src/db/repository/comics/artist.py index 80c328a..b8b16c3 100644 --- a/kontor-api/src/db/repository/comics/artist.py +++ b/kontor-api/src/db/repository/comics/artist.py @@ -1,29 +1,31 @@ from typing import List from src.db.models.comic import Artist -from src.schema.comics.artist_details import ArtistDetailResponse, ArtistWorktypeComicResponse +from src.schema.comics.artist_details import ArtistDetailResponse, ArtistWorktypeComicResponse, ArtistWorktypeIssueResponse from src.schema.comics.comic import ComicResponse from src.schema.comics.worktype import WorktypeResponse def get_artist_details(artist: Artist) -> ArtistDetailResponse: - works: List[ArtistWorktypeComicResponse] = [] - works_map = {} + comic_works: List[ArtistWorktypeComicResponse] = [] + comic_works_map = {} for work in artist.comic_works: worktype_id = work.work_type.id - if worktype_id in works_map: + if worktype_id in comic_works_map: comic = ComicResponse(id=work.comic.id, title=work.comic.title, completed=work.comic.completed) - works_map[worktype_id].comics.append(comic) + comic_works_map[worktype_id].comics.append(comic) else: - works_map[worktype_id] = ArtistWorktypeComicResponse( + comic_works_map[worktype_id] = ArtistWorktypeComicResponse( worktype=WorktypeResponse(id=worktype_id, name=work.work_type.name), comics=[ComicResponse(id=work.comic.id, title=work.comic.title, completed=work.comic.completed)] ) - for value in works_map.values(): - works.append(value) + for value in comic_works_map.values(): + comic_works.append(value) + issue_works: List[ArtistWorktypeIssueResponse] = [] response = ArtistDetailResponse( id=artist.id, - name=artist.name, - weblink=artist.weblink, - works=works + name=str(artist.name), + weblink=str(artist.weblink), + comic_works=comic_works, + issue_works=issue_works, ) return response diff --git a/kontor-api/src/schema/comics/artist_details.py b/kontor-api/src/schema/comics/artist_details.py index cd03ca2..dd42e89 100644 --- a/kontor-api/src/schema/comics/artist_details.py +++ b/kontor-api/src/schema/comics/artist_details.py @@ -2,6 +2,7 @@ from typing import List from pydantic import BaseModel from src.schema.comics.comic import ComicResponse +from src.schema.comics.issue import IssueDetailsResponse from src.schema.comics.worktype import WorktypeResponse @@ -9,8 +10,13 @@ class ArtistWorktypeComicResponse(BaseModel): worktype: WorktypeResponse comics: List[ComicResponse] +class ArtistWorktypeIssueResponse(BaseModel): + worktype: WorktypeResponse + issues: List[IssueDetailsResponse] + class ArtistDetailResponse(BaseModel): id: str name: str weblink: str - works: List[ArtistWorktypeComicResponse] + comic_works: List[ArtistWorktypeComicResponse] + issue_works: List[ArtistWorktypeIssueResponse] diff --git a/kontor-api/src/schema/comics/issue.py b/kontor-api/src/schema/comics/issue.py index 465085b..3c39799 100644 --- a/kontor-api/src/schema/comics/issue.py +++ b/kontor-api/src/schema/comics/issue.py @@ -1,10 +1,13 @@ from pydantic import BaseModel +from src.schema.comics.comic import ComicResponse +from src.schema.comics.volume import VolumeResponse + class IssueDetailsResponse(BaseModel): id: str issue_number: str in_stock: bool is_read: bool - comic_id: str - volume_id: str | None + comic: ComicResponse + volume: VolumeResponse | None -- 2.18.0 From d8e4cbfb9a44eed565079211acdab9c2c766c708 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Wed, 1 Oct 2025 21:06:12 +0200 Subject: [PATCH 18/20] display Comics as Artists --- .../comic-artists.component.html | 2 +- .../comic-comics/comic-comics.component.html | 38 ++++++++++++------- .../comic-comics/comic-comics.component.ts | 4 +- .../src/app/kontor/comic/comic.model.ts | 8 ++++ kontor-angular/src/styles.css | 20 ++++++++++ 5 files changed, 57 insertions(+), 15 deletions(-) diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html index 94bf2b1..041fe37 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html @@ -1,4 +1,3 @@ -

artists works!

@@ -34,3 +33,4 @@ }
+ diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.html b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.html index cc60f9f..455589b 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.html @@ -1,14 +1,26 @@ -
-
- -
-
-
- @if (comic()) { -

{{ comic().title }}

- } @else { -

Comic Details

- } -
-
+
+
+ +
+
+ @if (comic()) { +
+

{{ comic().title }}

+ {{ comic().title }} +
+ @for (work of comic().works; track work.worktype.id) { +
+ + @for (artist of work.artists; track artist.id) { +
+ +
+ } +
+ } + } @else { +

Comic Details

+ } +
+ diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts index 89a983f..e1caf57 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts @@ -3,10 +3,12 @@ import { ComicComicsListComponent } from "../comic-comics-list/comic-comics-list import { ComicDetails } from '../comic.model'; import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router'; import { ComicService } from './comic.service'; +import { ComicWorktypeComponent } from '../comic-worktype/comic-worktype.component'; +import { ComicArtistComponent } from '../comic-artist/comic-artist.component'; @Component({ selector: 'app-comic-comics', - imports: [ComicComicsListComponent], + imports: [ComicComicsListComponent, ComicWorktypeComponent, ComicArtistComponent], templateUrl: './comic-comics.component.html', styleUrl: './comic-comics.component.css' }) diff --git a/kontor-angular/src/app/kontor/comic/comic.model.ts b/kontor-angular/src/app/kontor/comic/comic.model.ts index 70df33b..5eb3e9f 100644 --- a/kontor-angular/src/app/kontor/comic/comic.model.ts +++ b/kontor-angular/src/app/kontor/comic/comic.model.ts @@ -30,10 +30,17 @@ export interface Issue { volume: Volume | undefined } + export interface ComicWork { worktype: string; } + +export interface ComicWorktypeArtists { + worktype: Worktype; + artists: Artist[]; +} + export interface ComicDetails { id: string; created: string; @@ -45,6 +52,7 @@ export interface ComicDetails { volumes: [ name: string, ]; + works: ComicWorktypeArtists[]; } export interface ArtistWorktypeComics { diff --git a/kontor-angular/src/styles.css b/kontor-angular/src/styles.css index 1d3192c..d8c6b3a 100644 --- a/kontor-angular/src/styles.css +++ b/kontor-angular/src/styles.css @@ -67,3 +67,23 @@ a.active { background-color: royalblue; color: white; } + +.grid-container { + display: grid; + grid-template-columns: 1fr 1fr; + grid-gap: 20px; +} + +section { + margin-left: 10px; + padding: 10px; + background-color: darkgrey; + border-radius: 10px; + margin-bottom: 10px; +} + +article { + margin-left: 10px; + padding: 5px; +} + -- 2.18.0 From a9829bf1189467085c1e6b266424f79a6f158ffb Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Thu, 2 Oct 2025 14:18:48 +0200 Subject: [PATCH 19/20] extend ComicDetailsResponse --- kontor-api/src/apis/version1/comic.py | 4 ++-- kontor-api/src/db/repository/comics/comic.py | 21 ++++++++++++++----- .../src/schema/comics/artist_details.py | 2 +- kontor-api/src/schema/comics/comic_details.py | 5 ++++- kontor-api/src/schema/comics/issue.py | 7 +------ kontor-api/src/schema/comics/issue_details.py | 13 ++++++++++++ kontor-api/src/schema/comics/publisher.py | 6 ++++++ 7 files changed, 43 insertions(+), 15 deletions(-) create mode 100644 kontor-api/src/schema/comics/issue_details.py create mode 100644 kontor-api/src/schema/comics/publisher.py diff --git a/kontor-api/src/apis/version1/comic.py b/kontor-api/src/apis/version1/comic.py index 4b2abde..95fd271 100644 --- a/kontor-api/src/apis/version1/comic.py +++ b/kontor-api/src/apis/version1/comic.py @@ -10,7 +10,7 @@ from src.schema.comics.comic import ComicResponse from src.schema.comics.artist import ArtistCreation, ArtistResponse from src.db.models.comic import Comic, Artist, Issue from src.schema.comics.comic_details import ComicDetailsResponse -from src.schema.comics.issue import IssueDetailsResponse +from src.schema.comics.issue_details import IssueDetailsResponse router = APIRouter() @@ -59,7 +59,7 @@ def add_artist(db: SessionDep, artist_creation: ArtistCreation) -> ArtistRespons db.commit() except: raise HTTPException(status_code=409, detail="Artist already added") - response = ArtistResponse(id=artist.id, name=artist.name) + response = ArtistResponse(id=artist.id, name=str(artist.name)) return response @router.get("/issues", response_model=List[IssueDetailsResponse]) diff --git a/kontor-api/src/db/repository/comics/comic.py b/kontor-api/src/db/repository/comics/comic.py index 315a59f..4821d29 100644 --- a/kontor-api/src/db/repository/comics/comic.py +++ b/kontor-api/src/db/repository/comics/comic.py @@ -7,7 +7,9 @@ from src.db.models.comic import Comic, Issue from src.schema.comics.artist import ArtistResponse from src.schema.comics.comic import ComicResponse, ComicSchema from src.schema.comics.comic_details import ComicDetailsResponse, ComicWorktypeArtistResponse -from src.schema.comics.issue import IssueDetailsResponse +from src.schema.comics.issue import IssueResponse +from src.schema.comics.issue_details import IssueDetailsResponse +from src.schema.comics.publisher import PublisherResponse from src.schema.comics.volume import VolumeResponse from src.schema.comics.worktype import WorktypeResponse @@ -23,8 +25,8 @@ def get_issue_details(issue: Issue) -> IssueDetailsResponse: issue_number=str(issue.issue_number), in_stock=bool(issue.in_stock), is_read=bool(issue.is_read), - comic_id=str(issue.comic_id), - volume_id=str(issue.volume_id) + comic=ComicResponse(id=issue.comic.id, title=issue.comic.title, completed=issue.comic.completed), + volume=VolumeResponse(id=issue.volume.id, name=issue.volume.name) ) return response @@ -46,6 +48,14 @@ def get_comic_details(comic: Comic) -> ComicDetailsResponse: volumes: List[VolumeResponse] = [] for volume in comic.volumes: volumes.append(VolumeResponse(id=volume.id, name=volume.name)) + issues: List[IssueResponse] = [] + for issue in comic.issues: + issues.append(IssueResponse( + id=issue.id, + issue_number=issue.issue_number, + in_stock=issue.in_stock, + is_read=issue.is_read + )) works: List[ComicWorktypeArtistResponse] = [] works_map: Dict[str, ComicWorktypeArtistResponse] = {} for work in comic.comic_works: @@ -63,13 +73,14 @@ def get_comic_details(comic: Comic) -> ComicDetailsResponse: for value in works_map.values(): works.append(value) response = ComicDetailsResponse( - id=comic.id, + id=str(comic.id), created=str(comic.created_date), title=str(comic.title), completed=bool(comic.completed), current_order=bool(comic.current_order), weblink=str(comic.weblink), - publisher=comic.publisher.name, + publisher=PublisherResponse(id=comic.publisher.id, name=comic.publisher.name), + issues=issues, volumes=volumes, works=works ) diff --git a/kontor-api/src/schema/comics/artist_details.py b/kontor-api/src/schema/comics/artist_details.py index dd42e89..416257c 100644 --- a/kontor-api/src/schema/comics/artist_details.py +++ b/kontor-api/src/schema/comics/artist_details.py @@ -2,7 +2,7 @@ from typing import List from pydantic import BaseModel from src.schema.comics.comic import ComicResponse -from src.schema.comics.issue import IssueDetailsResponse +from src.schema.comics.issue_details import IssueDetailsResponse from src.schema.comics.worktype import WorktypeResponse diff --git a/kontor-api/src/schema/comics/comic_details.py b/kontor-api/src/schema/comics/comic_details.py index 99411b7..16de453 100644 --- a/kontor-api/src/schema/comics/comic_details.py +++ b/kontor-api/src/schema/comics/comic_details.py @@ -2,6 +2,8 @@ from typing import List from pydantic import BaseModel from src.schema.comics.artist import ArtistResponse +from src.schema.comics.issue import IssueResponse +from src.schema.comics.publisher import PublisherResponse from src.schema.comics.volume import VolumeResponse from src.schema.comics.worktype import WorktypeResponse @@ -18,6 +20,7 @@ class ComicDetailsResponse(BaseModel): completed : bool current_order : bool weblink: str - publisher: str + publisher: PublisherResponse + issues: List[IssueResponse] volumes: List[VolumeResponse] works: List[ComicWorktypeArtistResponse] diff --git a/kontor-api/src/schema/comics/issue.py b/kontor-api/src/schema/comics/issue.py index 3c39799..719114c 100644 --- a/kontor-api/src/schema/comics/issue.py +++ b/kontor-api/src/schema/comics/issue.py @@ -1,13 +1,8 @@ from pydantic import BaseModel -from src.schema.comics.comic import ComicResponse -from src.schema.comics.volume import VolumeResponse - -class IssueDetailsResponse(BaseModel): +class IssueResponse(BaseModel): id: str issue_number: str in_stock: bool is_read: bool - comic: ComicResponse - volume: VolumeResponse | None diff --git a/kontor-api/src/schema/comics/issue_details.py b/kontor-api/src/schema/comics/issue_details.py new file mode 100644 index 0000000..3c39799 --- /dev/null +++ b/kontor-api/src/schema/comics/issue_details.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel + +from src.schema.comics.comic import ComicResponse +from src.schema.comics.volume import VolumeResponse + + +class IssueDetailsResponse(BaseModel): + id: str + issue_number: str + in_stock: bool + is_read: bool + comic: ComicResponse + volume: VolumeResponse | None diff --git a/kontor-api/src/schema/comics/publisher.py b/kontor-api/src/schema/comics/publisher.py new file mode 100644 index 0000000..bbbe175 --- /dev/null +++ b/kontor-api/src/schema/comics/publisher.py @@ -0,0 +1,6 @@ +from pydantic import BaseModel + + +class PublisherResponse(BaseModel): + id: str + name: str -- 2.18.0 From c52a5b871592efb37f5c7825ac5a223bf487fcb3 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Fri, 3 Oct 2025 16:04:52 +0200 Subject: [PATCH 20/20] Extend display of comics publishers --- .../comic-artists.component.html | 9 ++-- .../comic-comics/comic-comics.component.html | 10 +++- .../comic-comics/comic-comics.component.ts | 4 +- .../comic-issue/comic-issue.component.css | 0 .../comic-issue/comic-issue.component.html | 5 ++ .../comic-issue/comic-issue.component.spec.ts | 23 +++++++++ .../comic-issue/comic-issue.component.ts | 13 +++++ .../comic-publisher.component.css | 0 .../comic-publisher.component.html | 5 ++ .../comic-publisher.component.spec.ts | 23 +++++++++ .../comic-publisher.component.ts | 13 +++++ .../comic-publishers-list.component.css | 14 ++++++ .../comic-publishers-list.component.html | 7 +++ .../comic-publishers-list.component.spec.ts | 23 +++++++++ .../comic-publishers-list.component.ts | 37 +++++++++++++++ .../comic-publishers.component.html | 15 +++++- .../comic-publishers.component.ts | 18 +++++-- .../comic-publishers/publisher.service.ts | 47 +++++++++++++++++++ .../comic-section/comic-section.routes.ts | 7 ++- .../src/app/kontor/comic/comic.model.ts | 33 +++++++------ kontor-api/src/apis/version1/comic.py | 42 +++++++++++++++-- .../src/db/repository/comics/publisher.py | 7 +++ .../src/schema/comics/publisher_details.py | 5 ++ 23 files changed, 327 insertions(+), 33 deletions(-) create mode 100644 kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.css create mode 100644 kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.html create mode 100644 kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.css create mode 100644 kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.html create mode 100644 kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.css create mode 100644 kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.html create mode 100644 kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.spec.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.ts create mode 100644 kontor-angular/src/app/kontor/comic/comic-publishers/publisher.service.ts create mode 100644 kontor-api/src/db/repository/comics/publisher.py create mode 100644 kontor-api/src/schema/comics/publisher_details.py diff --git a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html index 041fe37..af4861d 100644 --- a/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-artists/comic-artists.component.html @@ -8,29 +8,28 @@

{{ artist().name }}

{{ artist().name }} +
@for (work of artist().comic_works; track work.worktype.id) { -
@for (comic of work.comics; track comic.id) {
} -
} +
+
@for (work of artist().issue_works; track work.worktype.id) { -
@for (issue of work.issues; track issue.id) {
} -
} +
} @else {

Artist Details

}
- diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.html b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.html index 455589b..7f8a5ac 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.html @@ -7,17 +7,23 @@

{{ comic().title }}

{{ comic().title }} +
+
+ @for (issue of comic().issues; track issue.id) { + + } +
+
@for (work of comic().works; track work.worktype.id) { -
@for (artist of work.artists; track artist.id) {
} -
} +
} @else {

Comic Details

} diff --git a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts index e1caf57..983f1a1 100644 --- a/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-comics/comic-comics.component.ts @@ -5,10 +5,12 @@ import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular import { ComicService } from './comic.service'; import { ComicWorktypeComponent } from '../comic-worktype/comic-worktype.component'; import { ComicArtistComponent } from '../comic-artist/comic-artist.component'; +import { ComicIssueComponent } from '../comic-issue/comic-issue.component'; +import { ComicPublisherComponent } from "../comic-publisher/comic-publisher.component"; @Component({ selector: 'app-comic-comics', - imports: [ComicComicsListComponent, ComicWorktypeComponent, ComicArtistComponent], + imports: [ComicComicsListComponent, ComicWorktypeComponent, ComicArtistComponent, ComicIssueComponent, ComicPublisherComponent], templateUrl: './comic-comics.component.html', styleUrl: './comic-comics.component.css' }) diff --git a/kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.css b/kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.html b/kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.html new file mode 100644 index 0000000..a96f8c1 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.html @@ -0,0 +1,5 @@ + diff --git a/kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.spec.ts new file mode 100644 index 0000000..51c1fb0 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComicIssueComponent } from './comic-issue.component'; + +describe('ComicIssueComponent', () => { + let component: ComicIssueComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ComicIssueComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ComicIssueComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.ts b/kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.ts new file mode 100644 index 0000000..ec004e6 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-issue/comic-issue.component.ts @@ -0,0 +1,13 @@ +import { Component, input } from '@angular/core'; +import { Issue } from '../comic.model'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-comic-issue', + imports: [RouterLink, RouterLinkActive], + templateUrl: './comic-issue.component.html', + styleUrl: './comic-issue.component.css' +}) +export class ComicIssueComponent { + issue = input.required(); +} diff --git a/kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.css b/kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.css new file mode 100644 index 0000000..e69de29 diff --git a/kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.html b/kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.html new file mode 100644 index 0000000..e964901 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.html @@ -0,0 +1,5 @@ + diff --git a/kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.spec.ts new file mode 100644 index 0000000..10036f5 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComicPublisherComponent } from './comic-publisher.component'; + +describe('ComicPublisherComponent', () => { + let component: ComicPublisherComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ComicPublisherComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ComicPublisherComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.ts b/kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.ts new file mode 100644 index 0000000..33d903b --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-publisher/comic-publisher.component.ts @@ -0,0 +1,13 @@ +import { Component, input } from '@angular/core'; +import { Publisher } from '../comic.model'; +import { RouterLink, RouterLinkActive } from '@angular/router'; + +@Component({ + selector: 'app-comic-publisher', + imports: [RouterLink, RouterLinkActive], + templateUrl: './comic-publisher.component.html', + styleUrl: './comic-publisher.component.css' +}) +export class ComicPublisherComponent { + publisher = input.required(); +} diff --git a/kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.css b/kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.css new file mode 100644 index 0000000..d95c44d --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.css @@ -0,0 +1,14 @@ +ul { + list-style: none; + margin: 0; + padding: 0; + display: flex; + gap: 0.5rem; + overflow: auto; +} + +@media (min-width: 768px) { + ul { + flex-direction: column; + } +} diff --git a/kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.html b/kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.html new file mode 100644 index 0000000..6592f11 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.html @@ -0,0 +1,7 @@ +
    + @for (publisher of publishers(); track publisher.id) { +
  • + +
  • + } +
diff --git a/kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.spec.ts b/kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.spec.ts new file mode 100644 index 0000000..c83a6fe --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComicPublishersListComponent } from './comic-publishers-list.component'; + +describe('ComicPublishersListComponent', () => { + let component: ComicPublishersListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ComicPublishersListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ComicPublishersListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.ts b/kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.ts new file mode 100644 index 0000000..6f47536 --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-publishers-list/comic-publishers-list.component.ts @@ -0,0 +1,37 @@ +import { Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; +import { Publisher } from '../comic.model'; +import { PublisherService } from '../comic-publishers/publisher.service'; +import { ComicPublisherComponent } from "../comic-publisher/comic-publisher.component"; + +@Component({ + selector: 'app-comic-publishers-list', + imports: [ComicPublisherComponent], + templateUrl: './comic-publishers-list.component.html', + styleUrl: './comic-publishers-list.component.css' +}) +export class ComicPublishersListComponent implements OnInit { + publishers = signal([]); + isFetching = signal(false); + error = signal(''); + private publisherService = inject(PublisherService); + private destroyRef = inject(DestroyRef); + + ngOnInit() { + this.isFetching.set(true); + const subscription = this.publisherService.loadPublishers().subscribe({ + next: (publishers) => { + this.publishers.set(publishers); + }, + 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/kontor/comic/comic-publishers/comic-publishers.component.html b/kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.html index 5917b28..3507aff 100644 --- a/kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.html +++ b/kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.html @@ -1 +1,14 @@ -

comic-publishers works!

+
+
+ +
+
+ @if (publisher()) { +
+

{{ publisher().name }}

+
+ } @else { +

Publisher Details

+ } +
+
diff --git a/kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.ts b/kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.ts index 2b01fcc..068d81c 100644 --- a/kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.ts +++ b/kontor-angular/src/app/kontor/comic/comic-publishers/comic-publishers.component.ts @@ -1,11 +1,23 @@ -import { Component } from '@angular/core'; +import { Component, inject, input } from '@angular/core'; +import { Publisher, PublisherDetails } from '../comic.model'; +import { ComicPublishersListComponent } from '../comic-publishers-list/comic-publishers-list.component'; +import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router'; +import { PublisherService } from './publisher.service'; @Component({ selector: 'app-comic-publishers', - imports: [], + imports: [ComicPublishersListComponent], templateUrl: './comic-publishers.component.html', styleUrl: './comic-publishers.component.css' }) export class ComicPublishersComponent { - + publisher = input.required(); } + +export const publisherResolver: ResolveFn = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => { + const publisherService = inject(PublisherService); + const publisherId = route.paramMap.get('publisherId'); + const publisherDetails = publisherService.loadPublisherDetails(publisherId); + console.log(publisherDetails); + return publisherDetails; +}; diff --git a/kontor-angular/src/app/kontor/comic/comic-publishers/publisher.service.ts b/kontor-angular/src/app/kontor/comic/comic-publishers/publisher.service.ts new file mode 100644 index 0000000..7ff0bff --- /dev/null +++ b/kontor-angular/src/app/kontor/comic/comic-publishers/publisher.service.ts @@ -0,0 +1,47 @@ +import { inject, Injectable, signal } from "@angular/core"; +import { HttpClient } from "@angular/common/http"; +import { catchError, map, throwError } from "rxjs"; +import { ErrorService } from "../../../shared/error.service"; +import { Publisher, PublisherDetails } from "../comic.model"; + +@Injectable({ + providedIn: 'root', +}) +export class PublisherService { + private errorService = inject(ErrorService); + private httpClient = inject(HttpClient); + private publishers = signal([]); + + loadedPublishers = this.publishers.asReadonly(); + + loadPublishers() { + return this.fetchPublishers('http://127.0.0.1:8800/api/comics/publishers', 'Someting went wrong fetching artists. Please try again later-'); + } + + loadPublisherDetails(artistId: string | null) { + return this.fetchPublisherDetails('http://127.0.0.1:8800/api/comics/publishers/' + artistId, 'Someting went wrong fetching comic artists. Please try again later.'); + } + + private fetchPublishers(url: string, errorMessage: string) { + return this.httpClient.get(url).pipe( + map((resData) => resData), + catchError((error) => { + console.log(error); + return throwError(() => new Error(errorMessage)); + }) + ); + } + + private fetchPublisherDetails(url: string, errorMessage: string) { + return this.httpClient.get(url).pipe( + map((resData) => { + console.log(resData); + return resData; + }), + catchError((error) => { + console.log(error); + return throwError(() => new Error(errorMessage)); + }) + ); + } +} diff --git a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts index 06d5f0d..cc57991 100644 --- a/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts +++ b/kontor-angular/src/app/kontor/comic/comic-section/comic-section.routes.ts @@ -1,6 +1,6 @@ import { Routes } from "@angular/router"; import { artistResolver, ComicArtistsComponent } from "../comic-artists/comic-artists.component"; -import { ComicPublishersComponent } from './../comic-publishers/comic-publishers.component'; +import { ComicPublishersComponent, publisherResolver } from './../comic-publishers/comic-publishers.component'; import { ComicComicsComponent, comicResolver } from "../comic-comics/comic-comics.component"; export const comicRoutes: Routes = [ @@ -20,8 +20,11 @@ export const comicRoutes: Routes = [ component: ComicPublishersComponent }, { - path: 'publishers/:publisherId', + path: 'publisher/:publisherId', component: ComicPublishersComponent, + resolve: { + publisher: publisherResolver + } }, { path: 'artist', diff --git a/kontor-angular/src/app/kontor/comic/comic.model.ts b/kontor-angular/src/app/kontor/comic/comic.model.ts index 5eb3e9f..16ec960 100644 --- a/kontor-angular/src/app/kontor/comic/comic.model.ts +++ b/kontor-angular/src/app/kontor/comic/comic.model.ts @@ -1,5 +1,3 @@ - - export interface Artist { id: string; name: string; @@ -10,6 +8,16 @@ export interface Worktype { name: string; } +export interface Publisher { + id: string; + name: string; +} + +export interface PublisherDetails { + id: string; + name: string; + +} export interface Comic { id: string; title: string; @@ -22,18 +30,16 @@ export interface Volume { } export interface Issue { - id: string; - issue_number: string; - in_stock: boolean; - is_read: boolean; - comic: Comic; - volume: Volume | undefined - + id: string; + issue_number: string; + in_stock: boolean; + is_read: boolean; + comic: Comic; + volume: Volume; } export interface ComicWork { worktype: string; - } export interface ComicWorktypeArtists { @@ -48,10 +54,9 @@ export interface ComicDetails { completed: boolean; current_order: boolean; weblink: string; - publisher: string; - volumes: [ - name: string, - ]; + publisher: Publisher; + issues: Issue[]; + volumes: Volume[]; works: ComicWorktypeArtists[]; } diff --git a/kontor-api/src/apis/version1/comic.py b/kontor-api/src/apis/version1/comic.py index 95fd271..3d3446a 100644 --- a/kontor-api/src/apis/version1/comic.py +++ b/kontor-api/src/apis/version1/comic.py @@ -1,16 +1,25 @@ from typing import List + from fastapi import APIRouter, HTTPException, status from src.apis.utils import SessionDep from src.core.log_conf import logger +from src.db.models.comic import Artist, Comic, Issue, Publisher from src.db.repository.comics.artist import get_artist_details -from src.db.repository.comics.comic import get_comic_details, get_short_info, list_comics, get_issue_details -from src.schema.comics.artist_details import ArtistDetailResponse -from src.schema.comics.comic import ComicResponse +from src.db.repository.comics.comic import ( + get_comic_details, + get_issue_details, + get_short_info, + list_comics, +) +from src.db.repository.comics.publisher import get_publisher_details from src.schema.comics.artist import ArtistCreation, ArtistResponse -from src.db.models.comic import Comic, Artist, Issue +from src.schema.comics.artist_details import ArtistDetailResponse +from src.schema.comics.comic import ComicResponse from src.schema.comics.comic_details import ComicDetailsResponse from src.schema.comics.issue_details import IssueDetailsResponse +from src.schema.comics.publisher import PublisherResponse +from src.schema.comics.publisher_details import PublisherDetailsResponse router = APIRouter() @@ -24,6 +33,7 @@ def get_all_comics(db: SessionDep) -> List[ComicResponse]: results.append(response) return results + @router.get("/comics/{comic_id}", response_model=ComicDetailsResponse) def get_comic(comic_id: str, db: SessionDep) -> ComicDetailsResponse: comic = db.get(Comic, comic_id) @@ -34,14 +44,16 @@ def get_comic(comic_id: str, db: SessionDep) -> ComicDetailsResponse: logger.info(f"ComicDetailsResponse: {response}") return response + @router.get("/artists", response_model=List[ArtistResponse]) def get_all_artists(db: SessionDep) -> List[ArtistResponse]: results: List[ArtistResponse] = [] artists = db.query(Artist).all() for artist in artists: - results.append(ArtistResponse(id=artist.id, name=str(artist.name))) + results.append(ArtistResponse(id=artist.id, name=str(artist.name))) # type: ignore return results + @router.get("/artists/{artist_id}", response_model=ArtistDetailResponse) def get_artist(artist_id: str, db: SessionDep) -> ArtistDetailResponse: artist = db.get(Artist, artist_id) @@ -50,6 +62,7 @@ def get_artist(artist_id: str, db: SessionDep) -> ArtistDetailResponse: response: ArtistDetailResponse = get_artist_details(artist) return response + @router.post("/artists", status_code=status.HTTP_201_CREATED) def add_artist(db: SessionDep, artist_creation: ArtistCreation) -> ArtistResponse: artist: Artist = Artist() @@ -62,6 +75,25 @@ def add_artist(db: SessionDep, artist_creation: ArtistCreation) -> ArtistRespons response = ArtistResponse(id=artist.id, name=str(artist.name)) return response + +@router.get("/publishers", response_model=List[PublisherResponse]) +def get_all_publishers(db: SessionDep) -> List[PublisherResponse]: + results: List[PublisherResponse] = [] + publishers = db.query(Publisher).all() + for publisher in publishers: + results.append(PublisherResponse(id=publisher.id, name=str(publisher.name))) + return results + + +@router.get("/publishers/{publisher_id}", response_model=PublisherDetailsResponse) +def get_publisher(publisher_id: str, db: SessionDep) -> PublisherDetailsResponse: + publisher = db.get(Publisher, publisher_id) + if publisher is None: + raise HTTPException(status_code=404, detail="Publisher could not be found") + response: PublisherDetailsResponse = get_publisher_details(publisher) + return response + + @router.get("/issues", response_model=List[IssueDetailsResponse]) def get_issues(db: SessionDep) -> List[IssueDetailsResponse]: results: List[IssueDetailsResponse] = [] diff --git a/kontor-api/src/db/repository/comics/publisher.py b/kontor-api/src/db/repository/comics/publisher.py new file mode 100644 index 0000000..0b62a24 --- /dev/null +++ b/kontor-api/src/db/repository/comics/publisher.py @@ -0,0 +1,7 @@ +from src.db.models.comic import Publisher +from src.schema.comics.publisher_details import PublisherDetailsResponse + + +def get_publisher_details(publisher: Publisher): + response: PublisherDetailsResponse = PublisherDetailsResponse(id=publisher.id, name=str(publisher.name)) + return response diff --git a/kontor-api/src/schema/comics/publisher_details.py b/kontor-api/src/schema/comics/publisher_details.py new file mode 100644 index 0000000..d62303a --- /dev/null +++ b/kontor-api/src/schema/comics/publisher_details.py @@ -0,0 +1,5 @@ +from pydantic import BaseModel + +class PublisherDetailsResponse(BaseModel): + id: str + name: str -- 2.18.0