diff --git a/backend/src/main/resources/application-dev.yml b/backend/src/main/resources/application-dev.yml index f70af08..9b38089 100644 --- a/backend/src/main/resources/application-dev.yml +++ b/backend/src/main/resources/application-dev.yml @@ -1,6 +1,6 @@ gameyfin: - #root: C:\Projects\privat\gameyfin-library - root: \\NAS-Simon\Öffentlich\Spiele + root: C:\Projects\privat\gameyfin-library + #root: \\NAS-Simon\Öffentlich\Spiele cache: ${gameyfin.root}\.gameyfin\cache db: ${gameyfin.root}\.gameyfin\db # Currently unused igdb: diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index 35a3af0..688f309 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -5,7 +5,7 @@ server: spring: jackson.default-property-inclusion: non_null datasource.db-name: gameyfin_db - datasource.url: jdbc:h2:file:./data/${spring.datasource.db-name};AUTO_SERVER=TRUE + datasource.url: jdbc:h2:file:${gameyfin.db}/${spring.datasource.db-name};AUTO_SERVER=TRUE datasource.username: gfadmin datasource.password: gameyfin datasource.driverClassName: org.h2.Driver @@ -19,6 +19,8 @@ spring: gameyfin: root: "" + cache: ${gameyfin.root}\.gameyfin\cache + db: ${gameyfin.root}\.gameyfin\db # Currently unused file-extensions: iso, zip, rar, 7z, exe igdb: config: diff --git a/frontend/angular.json b/frontend/angular.json index 683c94a..ab8b6da 100644 --- a/frontend/angular.json +++ b/frontend/angular.json @@ -104,5 +104,8 @@ } } } + }, + "cli": { + "analytics": false } } diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts index 1a2b8eb..968489a 100644 --- a/frontend/src/app/app-routing.module.ts +++ b/frontend/src/app/app-routing.module.ts @@ -4,7 +4,7 @@ import {FullpageLayoutComponent} from "./layouts/fullpage-layout/fullpage-layout import {PageNotFoundComponent} from "./components/page-not-found/page-not-found.component"; import {NavbarLayoutComponent} from "./layouts/navbar-layout/navbar-layout.component"; import {NotImplementedComponent} from "./components/not-implemented/not-implemented.component"; -import {GameserverListComponent} from "./components/gameserver-list/gameserver-list.component"; +import {LibraryOverviewComponent} from "./components/library-overview/library-overview.component"; const appRoutes: Routes = [ { @@ -13,7 +13,7 @@ const appRoutes: Routes = [ children: [ { path: 'library', - component: GameserverListComponent + component: LibraryOverviewComponent }, { path: 'games', diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 4e97481..30e7cfd 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -24,11 +24,13 @@ import {MatDialogModule} from "@angular/material/dialog"; import {MatButtonModule} from "@angular/material/button"; import {MatInputModule} from "@angular/material/input"; import {FlexModule} from "@angular/flex-layout"; -import {GameserverListComponent} from './components/gameserver-list/gameserver-list.component'; +import {LibraryOverviewComponent} from './components/library-overview/library-overview.component'; import {MatProgressSpinnerModule} from "@angular/material/progress-spinner"; import {MatTableModule} from "@angular/material/table"; import {MatPaginatorModule} from "@angular/material/paginator"; import {MatSortModule} from "@angular/material/sort"; +import { GameCoverComponent } from './components/game-cover/game-cover.component'; +import { GameDetailViewComponent } from './components/game-detail-view/game-detail-view.component'; @NgModule({ declarations: [ @@ -39,7 +41,9 @@ import {MatSortModule} from "@angular/material/sort"; PageNotFoundComponent, NotImplementedComponent, ErrorDialogComponent, - GameserverListComponent + LibraryOverviewComponent, + GameCoverComponent, + GameDetailViewComponent ], imports: [ BrowserModule, diff --git a/frontend/src/app/components/game-cover/game-cover.component.html b/frontend/src/app/components/game-cover/game-cover.component.html new file mode 100644 index 0000000..dd9e2e4 --- /dev/null +++ b/frontend/src/app/components/game-cover/game-cover.component.html @@ -0,0 +1,5 @@ +
+ + Cover of {{game.title}} + +
diff --git a/frontend/src/app/components/game-cover/game-cover.component.scss b/frontend/src/app/components/game-cover/game-cover.component.scss new file mode 100644 index 0000000..d86b38e --- /dev/null +++ b/frontend/src/app/components/game-cover/game-cover.component.scss @@ -0,0 +1,11 @@ +@use '@angular/material' as mat; + +.game-cover-container img { + + @include mat.elevation-transition(); + @include mat.elevation(4); + + &:hover { + @include mat.elevation(12); + } +} diff --git a/frontend/src/app/components/game-cover/game-cover.component.spec.ts b/frontend/src/app/components/game-cover/game-cover.component.spec.ts new file mode 100644 index 0000000..a61e5d9 --- /dev/null +++ b/frontend/src/app/components/game-cover/game-cover.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GameCoverComponent } from './game-cover.component'; + +describe('GameCoverComponent', () => { + let component: GameCoverComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ GameCoverComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(GameCoverComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/components/game-cover/game-cover.component.ts b/frontend/src/app/components/game-cover/game-cover.component.ts new file mode 100644 index 0000000..6f8e6b4 --- /dev/null +++ b/frontend/src/app/components/game-cover/game-cover.component.ts @@ -0,0 +1,18 @@ +import {Component, Input, OnInit} from '@angular/core'; +import {DetectedGameDto} from "../../models/dtos/DetectedGameDto"; + +@Component({ + selector: 'game-cover', + templateUrl: './game-cover.component.html', + styleUrls: ['./game-cover.component.scss'] +}) +export class GameCoverComponent implements OnInit { + + @Input() game!: DetectedGameDto; + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/frontend/src/app/components/game-detail-view/game-detail-view.component.html b/frontend/src/app/components/game-detail-view/game-detail-view.component.html new file mode 100644 index 0000000..2fffb85 --- /dev/null +++ b/frontend/src/app/components/game-detail-view/game-detail-view.component.html @@ -0,0 +1 @@ +

game-detail-view works!

diff --git a/frontend/src/app/components/game-detail-view/game-detail-view.component.scss b/frontend/src/app/components/game-detail-view/game-detail-view.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/app/components/game-detail-view/game-detail-view.component.spec.ts b/frontend/src/app/components/game-detail-view/game-detail-view.component.spec.ts new file mode 100644 index 0000000..a9959af --- /dev/null +++ b/frontend/src/app/components/game-detail-view/game-detail-view.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GameDetailViewComponent } from './game-detail-view.component'; + +describe('GameDetailViewComponent', () => { + let component: GameDetailViewComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ GameDetailViewComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(GameDetailViewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/components/game-detail-view/game-detail-view.component.ts b/frontend/src/app/components/game-detail-view/game-detail-view.component.ts new file mode 100644 index 0000000..7c9d888 --- /dev/null +++ b/frontend/src/app/components/game-detail-view/game-detail-view.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-game-detail-view', + templateUrl: './game-detail-view.component.html', + styleUrls: ['./game-detail-view.component.scss'] +}) +export class GameDetailViewComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/frontend/src/app/components/gameserver-list/gameserver-list.component.css b/frontend/src/app/components/library-overview/library-overview.component.css similarity index 100% rename from frontend/src/app/components/gameserver-list/gameserver-list.component.css rename to frontend/src/app/components/library-overview/library-overview.component.css diff --git a/frontend/src/app/components/gameserver-list/gameserver-list.component.html b/frontend/src/app/components/library-overview/library-overview.component.html similarity index 56% rename from frontend/src/app/components/gameserver-list/gameserver-list.component.html rename to frontend/src/app/components/library-overview/library-overview.component.html index 6493729..f2cbd26 100644 --- a/frontend/src/app/components/gameserver-list/gameserver-list.component.html +++ b/frontend/src/app/components/library-overview/library-overview.component.html @@ -5,10 +5,10 @@
-

No games in library.

+

Your game library is empty!

-
- +
+
diff --git a/frontend/src/app/components/gameserver-list/gameserver-list.component.spec.ts b/frontend/src/app/components/library-overview/library-overview.component.spec.ts similarity index 51% rename from frontend/src/app/components/gameserver-list/gameserver-list.component.spec.ts rename to frontend/src/app/components/library-overview/library-overview.component.spec.ts index 8d6d73a..d877678 100644 --- a/frontend/src/app/components/gameserver-list/gameserver-list.component.spec.ts +++ b/frontend/src/app/components/library-overview/library-overview.component.spec.ts @@ -1,20 +1,20 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { GameserverListComponent } from './gameserver-list.component'; +import { LibraryOverviewComponent } from './library-overview.component'; -describe('GameserverListComponent', () => { - let component: GameserverListComponent; - let fixture: ComponentFixture; +describe('LibraryOverviewComponent', () => { + let component: LibraryOverviewComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ GameserverListComponent ] + declarations: [ LibraryOverviewComponent ] }) .compileComponents(); }); beforeEach(() => { - fixture = TestBed.createComponent(GameserverListComponent); + fixture = TestBed.createComponent(LibraryOverviewComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/frontend/src/app/components/gameserver-list/gameserver-list.component.ts b/frontend/src/app/components/library-overview/library-overview.component.ts similarity index 77% rename from frontend/src/app/components/gameserver-list/gameserver-list.component.ts rename to frontend/src/app/components/library-overview/library-overview.component.ts index 4722ab4..2242242 100644 --- a/frontend/src/app/components/gameserver-list/gameserver-list.component.ts +++ b/frontend/src/app/components/library-overview/library-overview.component.ts @@ -4,10 +4,10 @@ import {DetectedGameDto} from "../../models/dtos/DetectedGameDto"; @Component({ selector: 'app-gameserver-list', - templateUrl: './gameserver-list.component.html', - styleUrls: ['./gameserver-list.component.css'] + templateUrl: './library-overview.component.html', + styleUrls: ['./library-overview.component.css'] }) -export class GameserverListComponent implements AfterViewInit { +export class LibraryOverviewComponent implements AfterViewInit { detectedGames: DetectedGameDto[] = []; loading: boolean = true;