diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index ae3a3235..bffcf849 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,22 +1,22 @@ import {NgModule} from '@angular/core'; import {RouterModule, Routes} from '@angular/router'; -import {BrowseComponent} from './browse/browse.component'; +import {LibraryItemGridComponent} from './components/library-item-grid/library-item-grid.component'; import {CollectionComponent} from "./collection/collection.component"; import {NotFoundComponent} from './not-found/not-found.component'; -import {PlayerComponent} from "./player/player.component"; -import {SearchComponent} from "./search/search.component"; -import {CollectionResolverService} from "./services/collection-resolver.service"; -import {LibraryResolverService} from './services/library-resolver.service'; -import {PeopleResolverService} from "./services/people-resolver.service"; -import {SearchResolverService} from "./services/search-resolver.service"; -import {ShowResolverService} from './services/show-resolver.service'; -import {StreamResolverService} from "./services/stream-resolver.service"; -import {ShowDetailsComponent} from './show-details/show-details.component'; +import {PlayerComponent} from "./pages/player/player.component"; +import {SearchComponent} from "./pages/search/search.component"; +import {CollectionResolverService} from "./services/resolvers/collection-resolver.service"; +import {LibraryResolverService} from './services/resolvers/library-resolver.service'; +import {PeopleResolverService} from "./services/resolvers/people-resolver.service"; +import {SearchResolverService} from "./services/resolvers/search-resolver.service"; +import {ShowResolverService} from './services/resolvers/show-resolver.service'; +import {StreamResolverService} from "./services/resolvers/stream-resolver.service"; +import {ShowDetailsComponent} from './pages/show-details/show-details.component'; import {AuthGuard} from "./auth/misc/authenticated-guard.service"; const routes: Routes = [ - {path: "browse", component: BrowseComponent, pathMatch: "full", resolve: { shows: LibraryResolverService }, canLoad: [AuthGuard.forPermissions("read")], canActivate: [AuthGuard.forPermissions("read")]}, - {path: "browse/:library-slug", component: BrowseComponent, resolve: { shows: LibraryResolverService }, canLoad: [AuthGuard.forPermissions("read")], canActivate: [AuthGuard.forPermissions("read")]}, + {path: "browse", component: LibraryItemGridComponent, pathMatch: "full", resolve: { shows: LibraryResolverService }, canLoad: [AuthGuard.forPermissions("read")], canActivate: [AuthGuard.forPermissions("read")]}, + {path: "browse/:library-slug", component: LibraryItemGridComponent, resolve: { shows: LibraryResolverService }, canLoad: [AuthGuard.forPermissions("read")], canActivate: [AuthGuard.forPermissions("read")]}, {path: "show/:show-slug", component: ShowDetailsComponent, resolve: { show: ShowResolverService }, canLoad: [AuthGuard.forPermissions("read")], canActivate: [AuthGuard.forPermissions("read")]}, {path: "collection/:collection-slug", component: CollectionComponent, resolve: { collection: CollectionResolverService }, canLoad: [AuthGuard.forPermissions("read")], canActivate: [AuthGuard.forPermissions("read")]}, {path: "people/:people-slug", component: CollectionComponent, resolve: { collection: PeopleResolverService }, canLoad: [AuthGuard.forPermissions("read")], canActivate: [AuthGuard.forPermissions("read")]}, diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 2c6b7e35..5653a1e5 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -7,6 +7,8 @@ import {MatDialog} from "@angular/material/dialog"; import {Account} from "../models/account"; import {AccountComponent} from "./auth/account/account.component"; import {AuthService} from "./auth/auth.service"; +import {Library} from "../models/library"; +import {Page} from "../models/page"; @Component({ selector: 'app-root', @@ -18,11 +20,15 @@ export class AppComponent libraries: Library[]; isLoading: boolean = false; - constructor(private http: HttpClient, private router: Router, private location: Location, public authManager: AuthService, public dialog: MatDialog) + constructor(private http: HttpClient, + private router: Router, + private location: Location, + public authManager: AuthService, + public dialog: MatDialog) { - http.get("api/libraries").subscribe(result => + http.get>("api/libraries").subscribe(result => { - this.libraries = result; + this.libraries = result.items; }, error => console.error(error)); this.router.events.subscribe((event: Event) => @@ -84,10 +90,3 @@ export class AppComponent return this.authManager.isAuthenticated; } } - -interface Library -{ - id: number; - slug: string; - name: string; -} diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 813b06b8..4aaf714d 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -14,15 +14,15 @@ import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; -import { BrowseComponent } from './browse/browse.component'; +import { LibraryItemGridComponent } from './components/library-item-grid/library-item-grid.component'; import { CollectionComponent } from './collection/collection.component'; -import { EpisodesListComponent } from './episodes-list/episodes-list.component'; +import { EpisodesListComponent } from './components/episodes-list/episodes-list.component'; import { NotFoundComponent } from './not-found/not-found.component'; -import { PeopleListComponent } from './people-list/people-list.component'; -import { PlayerComponent } from './player/player.component'; -import { SearchComponent } from './search/search.component'; -import { ShowDetailsComponent } from './show-details/show-details.component'; -import { ShowsListComponent } from './shows-list/shows-list.component'; +import { PeopleListComponent } from './components/people-list/people-list.component'; +import { PlayerComponent } from './pages/player/player.component'; +import { SearchComponent } from './pages/search/search.component'; +import { ShowDetailsComponent } from './pages/show-details/show-details.component'; +import { ShowsListComponent } from './components/shows-list/shows-list.component'; import {FormsModule, ReactiveFormsModule} from "@angular/forms"; import { MatInputModule } from "@angular/material/input"; import { MatFormFieldModule } from "@angular/material/form-field"; @@ -33,20 +33,20 @@ import {MatDialogModule} from '@angular/material/dialog'; import {FallbackDirective} from "./misc/fallback.directive"; import {AuthModule} from "./auth/auth.module"; import {AuthRoutingModule} from "./auth/auth-routing.module"; -import { TrailerDialogComponent } from './trailer-dialog/trailer-dialog.component'; +import { TrailerDialogComponent } from './pages/trailer-dialog/trailer-dialog.component'; import {CollectionsListComponent} from "./collection-list/collections-list.component"; -import { MetadataEditComponent } from './metadata-edit/metadata-edit.component'; +import { MetadataEditComponent } from './pages/metadata-edit/metadata-edit.component'; import {MatChipsModule} from "@angular/material/chips"; import {MatAutocompleteModule} from "@angular/material/autocomplete"; import {MatExpansionModule} from "@angular/material/expansion"; -import { ShowGridComponent } from './show-grid/show-grid.component'; +import { ShowGridComponent } from './components/show-grid/show-grid.component'; @NgModule({ declarations: [ AppComponent, NotFoundComponent, - BrowseComponent, + LibraryItemGridComponent, ShowDetailsComponent, EpisodesListComponent, PlayerComponent, diff --git a/src/app/episodes-list/episodes-list.component.html b/src/app/components/episodes-list/episodes-list.component.html similarity index 100% rename from src/app/episodes-list/episodes-list.component.html rename to src/app/components/episodes-list/episodes-list.component.html diff --git a/src/app/episodes-list/episodes-list.component.scss b/src/app/components/episodes-list/episodes-list.component.scss similarity index 93% rename from src/app/episodes-list/episodes-list.component.scss rename to src/app/components/episodes-list/episodes-list.component.scss index 6135891e..d4359d3d 100644 --- a/src/app/episodes-list/episodes-list.component.scss +++ b/src/app/components/episodes-list/episodes-list.component.scss @@ -1,6 +1,6 @@ -@import "~bootstrap/scss/functions"; -@import "~bootstrap/scss/variables"; -@import "~bootstrap/scss/mixins/breakpoints"; +@import "../../../../node_modules/bootstrap/scss/functions"; +@import "../../../../node_modules/bootstrap/scss/variables"; +@import "../../../../node_modules/bootstrap/scss/mixins/breakpoints"; .root { diff --git a/src/app/episodes-list/episodes-list.component.ts b/src/app/components/episodes-list/episodes-list.component.ts similarity index 97% rename from src/app/episodes-list/episodes-list.component.ts rename to src/app/components/episodes-list/episodes-list.component.ts index ea6dc531..b1eab54c 100644 --- a/src/app/episodes-list/episodes-list.component.ts +++ b/src/app/components/episodes-list/episodes-list.component.ts @@ -1,7 +1,7 @@ import { Component, ElementRef, Input, ViewChild } from '@angular/core'; import { MatButton } from "@angular/material/button"; import { DomSanitizer } from "@angular/platform-browser"; -import { Episode } from "../../models/episode"; +import { Episode } from "../../../models/episode"; @Component({ selector: 'app-episodes-list', diff --git a/src/app/browse/browse.component.html b/src/app/components/library-item-grid/library-item-grid.component.html similarity index 100% rename from src/app/browse/browse.component.html rename to src/app/components/library-item-grid/library-item-grid.component.html diff --git a/src/app/browse/browse.component.scss b/src/app/components/library-item-grid/library-item-grid.component.scss similarity index 84% rename from src/app/browse/browse.component.scss rename to src/app/components/library-item-grid/library-item-grid.component.scss index 62fe61c8..2cd1034f 100644 --- a/src/app/browse/browse.component.scss +++ b/src/app/components/library-item-grid/library-item-grid.component.scss @@ -1,6 +1,6 @@ -@import "~bootstrap/scss/functions"; -@import "~bootstrap/scss/variables"; -@import "~bootstrap/scss/mixins/breakpoints"; +@import "../../../../node_modules/bootstrap/scss/functions"; +@import "../../../../node_modules/bootstrap/scss/variables"; +@import "../../../../node_modules/bootstrap/scss/mixins/breakpoints"; button { diff --git a/src/app/browse/browse.component.ts b/src/app/components/library-item-grid/library-item-grid.component.ts similarity index 87% rename from src/app/browse/browse.component.ts rename to src/app/components/library-item-grid/library-item-grid.component.ts index 1782a4b6..3210ccbf 100644 --- a/src/app/browse/browse.component.ts +++ b/src/app/components/library-item-grid/library-item-grid.component.ts @@ -1,14 +1,14 @@ import { Component, OnInit, Input } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { DomSanitizer } from '@angular/platform-browser'; -import { Show } from "../../models/show"; +import { Show } from "../../../models/show"; @Component({ selector: 'app-browse', - templateUrl: './browse.component.html', - styleUrls: ['./browse.component.scss'] + templateUrl: './library-item-grid.component.html', + styleUrls: ['./library-item-grid.component.scss'] }) -export class BrowseComponent +export class LibraryItemGridComponent { @Input() shows: Show[]; @Input() sortEnabled: boolean = true; diff --git a/src/app/people-list/people-list.component.html b/src/app/components/people-list/people-list.component.html similarity index 100% rename from src/app/people-list/people-list.component.html rename to src/app/components/people-list/people-list.component.html diff --git a/src/app/people-list/people-list.component.scss b/src/app/components/people-list/people-list.component.scss similarity index 89% rename from src/app/people-list/people-list.component.scss rename to src/app/components/people-list/people-list.component.scss index 9ac919d8..8b0345ee 100644 --- a/src/app/people-list/people-list.component.scss +++ b/src/app/components/people-list/people-list.component.scss @@ -1,6 +1,6 @@ -@import "~bootstrap/scss/functions"; -@import "~bootstrap/scss/variables"; -@import "~bootstrap/scss/mixins/breakpoints"; +@import "../../../../node_modules/bootstrap/scss/functions"; +@import "../../../../node_modules/bootstrap/scss/variables"; +@import "../../../../node_modules/bootstrap/scss/mixins/breakpoints"; .people-container { diff --git a/src/app/people-list/people-list.component.ts b/src/app/components/people-list/people-list.component.ts similarity index 97% rename from src/app/people-list/people-list.component.ts rename to src/app/components/people-list/people-list.component.ts index 4cf46f98..7bc29d78 100644 --- a/src/app/people-list/people-list.component.ts +++ b/src/app/components/people-list/people-list.component.ts @@ -1,7 +1,7 @@ import { Component, ElementRef, Input, ViewChild } from '@angular/core'; import { MatButton } from "@angular/material/button"; import { DomSanitizer } from "@angular/platform-browser"; -import { People } from "../../models/people"; +import { People } from "../../../models/people"; @Component({ selector: 'app-people-list', diff --git a/src/app/show-grid/show-grid.component.html b/src/app/components/show-grid/show-grid.component.html similarity index 100% rename from src/app/show-grid/show-grid.component.html rename to src/app/components/show-grid/show-grid.component.html diff --git a/src/app/show-grid/show-grid.component.scss b/src/app/components/show-grid/show-grid.component.scss similarity index 89% rename from src/app/show-grid/show-grid.component.scss rename to src/app/components/show-grid/show-grid.component.scss index 5609ab4e..074f9c31 100644 --- a/src/app/show-grid/show-grid.component.scss +++ b/src/app/components/show-grid/show-grid.component.scss @@ -1,6 +1,6 @@ -@import "~bootstrap/scss/functions"; -@import "~bootstrap/scss/variables"; -@import "~bootstrap/scss/mixins/breakpoints"; +@import "../../../../node_modules/bootstrap/scss/functions"; +@import "../../../../node_modules/bootstrap/scss/variables"; +@import "../../../../node_modules/bootstrap/scss/mixins/breakpoints"; button { diff --git a/src/app/show-grid/show-grid.component.ts b/src/app/components/show-grid/show-grid.component.ts similarity index 94% rename from src/app/show-grid/show-grid.component.ts rename to src/app/components/show-grid/show-grid.component.ts index d22da070..2d65b410 100644 --- a/src/app/show-grid/show-grid.component.ts +++ b/src/app/components/show-grid/show-grid.component.ts @@ -1,5 +1,5 @@ import {AfterViewInit, Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; -import {Show} from "../../models/show"; +import {Show} from "../../../models/show"; import {DomSanitizer} from "@angular/platform-browser"; @Component({ diff --git a/src/app/shows-list/shows-list.component.html b/src/app/components/shows-list/shows-list.component.html similarity index 100% rename from src/app/shows-list/shows-list.component.html rename to src/app/components/shows-list/shows-list.component.html diff --git a/src/app/shows-list/shows-list.component.scss b/src/app/components/shows-list/shows-list.component.scss similarity index 90% rename from src/app/shows-list/shows-list.component.scss rename to src/app/components/shows-list/shows-list.component.scss index 6464d0b1..9ec122f5 100644 --- a/src/app/shows-list/shows-list.component.scss +++ b/src/app/components/shows-list/shows-list.component.scss @@ -1,6 +1,6 @@ -@import "~bootstrap/scss/functions"; -@import "~bootstrap/scss/variables"; -@import "~bootstrap/scss/mixins/breakpoints"; +@import "../../../../node_modules/bootstrap/scss/functions"; +@import "../../../../node_modules/bootstrap/scss/variables"; +@import "../../../../node_modules/bootstrap/scss/mixins/breakpoints"; .shows-container { diff --git a/src/app/shows-list/shows-list.component.ts b/src/app/components/shows-list/shows-list.component.ts similarity index 97% rename from src/app/shows-list/shows-list.component.ts rename to src/app/components/shows-list/shows-list.component.ts index 9628a091..1bbd818b 100644 --- a/src/app/shows-list/shows-list.component.ts +++ b/src/app/components/shows-list/shows-list.component.ts @@ -1,7 +1,7 @@ import { Component, ElementRef, Input, ViewChild } from '@angular/core'; import { MatButton } from "@angular/material/button"; import { DomSanitizer } from "@angular/platform-browser"; -import { Show } from "../../models/show"; +import { Show } from "../../../models/show"; @Component({ selector: 'app-shows-list', diff --git a/src/app/metadata-edit/metadata-edit.component.scss b/src/app/metadata-edit/metadata-edit.component.scss deleted file mode 100644 index 1c4773f4..00000000 --- a/src/app/metadata-edit/metadata-edit.component.scss +++ /dev/null @@ -1,18 +0,0 @@ -@import "~bootstrap/scss/functions"; -@import "~bootstrap/scss/variables"; -@import "~bootstrap/scss/mixins/breakpoints"; - -.provider -{ - width: 100%; - - @include media-breakpoint-up(md) - { - width: 33%; - } - - @include media-breakpoint-up(lg) - { - width: 25%; - } -} \ No newline at end of file diff --git a/src/app/metadata-edit/metadata-edit.component.html b/src/app/pages/metadata-edit/metadata-edit.component.html similarity index 100% rename from src/app/metadata-edit/metadata-edit.component.html rename to src/app/pages/metadata-edit/metadata-edit.component.html diff --git a/src/app/pages/metadata-edit/metadata-edit.component.scss b/src/app/pages/metadata-edit/metadata-edit.component.scss new file mode 100644 index 00000000..c7a471b1 --- /dev/null +++ b/src/app/pages/metadata-edit/metadata-edit.component.scss @@ -0,0 +1,18 @@ +@import "../../../../node_modules/bootstrap/scss/functions"; +@import "../../../../node_modules/bootstrap/scss/variables"; +@import "../../../../node_modules/bootstrap/scss/mixins/breakpoints"; + +.provider +{ + width: 100%; + + @include media-breakpoint-up(md) + { + width: 33%; + } + + @include media-breakpoint-up(lg) + { + width: 25%; + } +} \ No newline at end of file diff --git a/src/app/metadata-edit/metadata-edit.component.ts b/src/app/pages/metadata-edit/metadata-edit.component.ts similarity index 93% rename from src/app/metadata-edit/metadata-edit.component.ts rename to src/app/pages/metadata-edit/metadata-edit.component.ts index 87cc9783..8a32883f 100644 --- a/src/app/metadata-edit/metadata-edit.component.ts +++ b/src/app/pages/metadata-edit/metadata-edit.component.ts @@ -1,15 +1,15 @@ import {Component, ElementRef, Inject, OnInit, ViewChild} from '@angular/core'; import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; import {HttpClient, HttpErrorResponse} from "@angular/common/http"; -import {Show} from "../../models/show"; -import {Genre} from "../../models/genre"; +import {Show} from "../../../models/show"; +import {Genre} from "../../../models/genre"; import {MatChipInputEvent} from "@angular/material/chips"; import {MatAutocompleteSelectedEvent} from "@angular/material/autocomplete"; import {Observable, of} from "rxjs"; import {catchError, tap} from "rxjs/operators"; -import {Studio} from "../../models/studio"; -import {ShowGridComponent} from "../show-grid/show-grid.component"; -import {Provider} from "../../models/provider"; +import {Studio} from "../../../models/studio"; +import {ShowGridComponent} from "../../components/show-grid/show-grid.component"; +import {Provider} from "../../../models/provider"; import {MatSnackBar} from "@angular/material/snack-bar"; @Component({ diff --git a/src/app/player/player.component.html b/src/app/pages/player/player.component.html similarity index 100% rename from src/app/player/player.component.html rename to src/app/pages/player/player.component.html diff --git a/src/app/player/player.component.scss b/src/app/pages/player/player.component.scss similarity index 98% rename from src/app/player/player.component.scss rename to src/app/pages/player/player.component.scss index 9b313e7b..6808ef76 100644 --- a/src/app/player/player.component.scss +++ b/src/app/pages/player/player.component.scss @@ -1,5 +1,5 @@ -@import "../../libraries/subtitles"; -@import "./vtt-subtitles"; +@import "../../../libraries/subtitles.css"; +@import "vtt-subtitles"; .player { diff --git a/src/app/player/player.component.ts b/src/app/pages/player/player.component.ts similarity index 99% rename from src/app/player/player.component.ts rename to src/app/pages/player/player.component.ts index 5b858c4a..3e9d7af8 100644 --- a/src/app/player/player.component.ts +++ b/src/app/pages/player/player.component.ts @@ -2,10 +2,10 @@ import {Component, Injector, OnInit, ViewEncapsulation} from '@angular/core'; import {MatSnackBar} from "@angular/material/snack-bar"; import {DomSanitizer, Title} from "@angular/platform-browser"; import {ActivatedRoute, Event, NavigationCancel, NavigationEnd, NavigationStart, Router} from "@angular/router"; -import {Track, WatchItem} from "../../models/watch-item"; +import {Track, WatchItem} from "../../../models/watch-item"; import {Location} from "@angular/common"; import * as Hls from "hls.js" -import {getPlaybackMethod, getWhatIsSupported, method, SupportList} from "../../videoSupport/playbackMethodDetector"; +import {getPlaybackMethod, getWhatIsSupported, method, SupportList} from "../../../videoSupport/playbackMethodDetector"; import {OidcSecurityService} from "angular-auth-oidc-client"; declare var SubtitleManager: any; diff --git a/src/app/player/vtt-subtitles.scss b/src/app/pages/player/vtt-subtitles.scss similarity index 100% rename from src/app/player/vtt-subtitles.scss rename to src/app/pages/player/vtt-subtitles.scss diff --git a/src/app/search/search.component.html b/src/app/pages/search/search.component.html similarity index 100% rename from src/app/search/search.component.html rename to src/app/pages/search/search.component.html diff --git a/src/app/search/search.component.scss b/src/app/pages/search/search.component.scss similarity index 100% rename from src/app/search/search.component.scss rename to src/app/pages/search/search.component.scss diff --git a/src/app/search/search.component.ts b/src/app/pages/search/search.component.ts similarity index 93% rename from src/app/search/search.component.ts rename to src/app/pages/search/search.component.ts index d79f6657..9f039bda 100644 --- a/src/app/search/search.component.ts +++ b/src/app/pages/search/search.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit, OnDestroy } from '@angular/core'; import { ActivatedRoute } from "@angular/router"; -import { SearchResult } from "../../models/search-result"; +import { SearchResult } from "../../../models/search-result"; import { Title } from "@angular/platform-browser"; @Component({ diff --git a/src/app/show-details/show-details.component.html b/src/app/pages/show-details/show-details.component.html similarity index 100% rename from src/app/show-details/show-details.component.html rename to src/app/pages/show-details/show-details.component.html diff --git a/src/app/show-details/show-details.component.scss b/src/app/pages/show-details/show-details.component.scss similarity index 90% rename from src/app/show-details/show-details.component.scss rename to src/app/pages/show-details/show-details.component.scss index 13cd2360..3b9b8b57 100644 --- a/src/app/show-details/show-details.component.scss +++ b/src/app/pages/show-details/show-details.component.scss @@ -1,6 +1,6 @@ -@import "~bootstrap/scss/functions"; -@import "~bootstrap/scss/variables"; -@import "~bootstrap/scss/mixins/breakpoints"; +@import "../../../../node_modules/bootstrap/scss/functions"; +@import "../../../../node_modules/bootstrap/scss/variables"; +@import "../../../../node_modules/bootstrap/scss/mixins/breakpoints"; a { diff --git a/src/app/show-details/show-details.component.ts b/src/app/pages/show-details/show-details.component.ts similarity index 96% rename from src/app/show-details/show-details.component.ts rename to src/app/pages/show-details/show-details.component.ts index ae736ef7..8634f15a 100644 --- a/src/app/show-details/show-details.component.ts +++ b/src/app/pages/show-details/show-details.component.ts @@ -3,12 +3,12 @@ import { Component, OnInit } from '@angular/core'; import { MatSnackBar } from "@angular/material/snack-bar"; import { Title } from '@angular/platform-browser'; import {ActivatedRoute, Router} from '@angular/router'; -import { Episode } from "../../models/episode"; -import { Show } from "../../models/show"; +import { Episode } from "../../../models/episode"; +import { Show } from "../../../models/show"; import {MatDialog} from "@angular/material/dialog"; import {TrailerDialogComponent} from "../trailer-dialog/trailer-dialog.component"; import {MetadataEditComponent} from "../metadata-edit/metadata-edit.component"; -import {Account} from "../../models/account"; +import {Account} from "../../../models/account"; @Component({ selector: 'app-show-details', diff --git a/src/app/trailer-dialog/trailer-dialog.component.html b/src/app/pages/trailer-dialog/trailer-dialog.component.html similarity index 100% rename from src/app/trailer-dialog/trailer-dialog.component.html rename to src/app/pages/trailer-dialog/trailer-dialog.component.html diff --git a/src/app/trailer-dialog/trailer-dialog.component.scss b/src/app/pages/trailer-dialog/trailer-dialog.component.scss similarity index 100% rename from src/app/trailer-dialog/trailer-dialog.component.scss rename to src/app/pages/trailer-dialog/trailer-dialog.component.scss diff --git a/src/app/trailer-dialog/trailer-dialog.component.ts b/src/app/pages/trailer-dialog/trailer-dialog.component.ts similarity index 100% rename from src/app/trailer-dialog/trailer-dialog.component.ts rename to src/app/pages/trailer-dialog/trailer-dialog.component.ts diff --git a/src/app/services/library.service.ts b/src/app/services/library.service.ts new file mode 100644 index 00000000..b171b32d --- /dev/null +++ b/src/app/services/library.service.ts @@ -0,0 +1,48 @@ +import {Injectable} from "@angular/core"; +import {HttpClient} from "@angular/common/http"; +import {Observable} from "rxjs" +import {Page} from "../../models/page"; +import {IResource} from "../../models/resources/resource"; + +class CrudApi +{ + constructor(private client: HttpClient, private route: string) {} + + get(id: number | string): Observable + { + return this.client.get(`/api/${this.route}/${id}`); + } + + getAll(id: number | string): Observable> + { + return this.client.get>(`/api/${this.route}`); + } + + create(item: T): Observable + { + return this.client.post(`/api/${this.route}`, item); + } + + edit(item: T): Observable + { + return this.client.put(`/api/${this.route}`, item); + } + + delete(item: T): Observable + { + return this.client.delete(`/api/${this.route}/${item.slug}`); + } +} + +@Injectable({ + providedIn: 'root' +}) +export class LibraryService +{ + constructor() { } + + get() + { + + } +} diff --git a/src/app/services/collection-resolver.service.ts b/src/app/services/resolvers/collection-resolver.service.ts similarity index 95% rename from src/app/services/collection-resolver.service.ts rename to src/app/services/resolvers/collection-resolver.service.ts index ec43e0c7..b4bb2c1b 100644 --- a/src/app/services/collection-resolver.service.ts +++ b/src/app/services/resolvers/collection-resolver.service.ts @@ -4,7 +4,7 @@ import { MatSnackBar } from '@angular/material/snack-bar'; import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; import { EMPTY, Observable } from 'rxjs'; import { catchError } from 'rxjs/operators' -import { Collection } from "../../models/collection"; +import { Collection } from "../../../models/collection"; @Injectable({ providedIn: 'root' diff --git a/src/app/services/library-resolver.service.ts b/src/app/services/resolvers/library-resolver.service.ts similarity index 97% rename from src/app/services/library-resolver.service.ts rename to src/app/services/resolvers/library-resolver.service.ts index 5c6d4502..bf5f9d73 100644 --- a/src/app/services/library-resolver.service.ts +++ b/src/app/services/resolvers/library-resolver.service.ts @@ -4,7 +4,7 @@ import { MatSnackBar } from '@angular/material/snack-bar'; import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; import { EMPTY, Observable } from 'rxjs'; import { catchError } from 'rxjs/operators'; -import { Show } from "../../models/show"; +import { Show } from "../../../models/show"; @Injectable() diff --git a/src/app/services/people-resolver.service.ts b/src/app/services/resolvers/people-resolver.service.ts similarity index 91% rename from src/app/services/people-resolver.service.ts rename to src/app/services/resolvers/people-resolver.service.ts index b751f9f2..b43b3bd5 100644 --- a/src/app/services/people-resolver.service.ts +++ b/src/app/services/resolvers/people-resolver.service.ts @@ -4,8 +4,8 @@ import { MatSnackBar } from '@angular/material/snack-bar'; import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; import { EMPTY, Observable } from 'rxjs'; import { catchError } from 'rxjs/operators'; -import { Collection } from "../../models/collection"; -import { People } from "../../models/people"; +import { Collection } from "../../../models/collection"; +import { People } from "../../../models/people"; @Injectable({ providedIn: 'root' diff --git a/src/app/services/search-resolver.service.ts b/src/app/services/resolvers/search-resolver.service.ts similarity index 94% rename from src/app/services/search-resolver.service.ts rename to src/app/services/resolvers/search-resolver.service.ts index c6fd3984..7471dcbf 100644 --- a/src/app/services/search-resolver.service.ts +++ b/src/app/services/resolvers/search-resolver.service.ts @@ -4,7 +4,7 @@ import { MatSnackBar } from '@angular/material/snack-bar'; import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; import { EMPTY, Observable } from 'rxjs'; import { catchError } from 'rxjs/operators'; -import { SearchResult } from "../../models/search-result"; +import { SearchResult } from "../../../models/search-result"; @Injectable({ providedIn: 'root' diff --git a/src/app/services/show-resolver.service.ts b/src/app/services/resolvers/show-resolver.service.ts similarity index 96% rename from src/app/services/show-resolver.service.ts rename to src/app/services/resolvers/show-resolver.service.ts index a85adda2..7a1bd6db 100644 --- a/src/app/services/show-resolver.service.ts +++ b/src/app/services/resolvers/show-resolver.service.ts @@ -4,7 +4,7 @@ import { MatSnackBar } from '@angular/material/snack-bar'; import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; import { EMPTY, Observable } from 'rxjs'; import { catchError } from 'rxjs/operators'; -import { Show } from "../../models/show"; +import { Show } from "../../../models/show"; @Injectable() export class ShowResolverService implements Resolve diff --git a/src/app/services/stream-resolver.service.ts b/src/app/services/resolvers/stream-resolver.service.ts similarity index 95% rename from src/app/services/stream-resolver.service.ts rename to src/app/services/resolvers/stream-resolver.service.ts index 236e0493..452b5917 100644 --- a/src/app/services/stream-resolver.service.ts +++ b/src/app/services/resolvers/stream-resolver.service.ts @@ -4,7 +4,7 @@ import { MatSnackBar } from '@angular/material/snack-bar'; import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; import { EMPTY, Observable } from 'rxjs'; import { catchError } from 'rxjs/operators'; -import { WatchItem } from "../../models/watch-item"; +import { WatchItem } from "../../../models/watch-item"; @Injectable() diff --git a/src/models/genre.ts b/src/models/genre.ts index 8d4de25c..88205e9d 100644 --- a/src/models/genre.ts +++ b/src/models/genre.ts @@ -1,5 +1,5 @@ export interface Genre { - slug: string; - name: string; + slug: string; + name: string; } diff --git a/src/models/library-item.ts b/src/models/library-item.ts new file mode 100644 index 00000000..18f6162a --- /dev/null +++ b/src/models/library-item.ts @@ -0,0 +1,20 @@ +enum ItemType +{ + Show, + Movie, + Collection +} + +export interface LibraryItem +{ + ID: number + Slug: string + Title: string + Overview: string + Status: string + TrailerUrl: string + StartYear: number + EndYear: number + Poster: string + Type: ItemType +} \ No newline at end of file diff --git a/src/models/library.ts b/src/models/library.ts new file mode 100644 index 00000000..99aadb02 --- /dev/null +++ b/src/models/library.ts @@ -0,0 +1,6 @@ +export interface Library +{ + id: number; + slug: string; + name: string; +} \ No newline at end of file diff --git a/src/models/page.ts b/src/models/page.ts new file mode 100644 index 00000000..73a05c40 --- /dev/null +++ b/src/models/page.ts @@ -0,0 +1,8 @@ +export interface Page +{ + this: string + next: string + first: string + count: number + items: T[] +} \ No newline at end of file diff --git a/src/models/resources/resource.ts b/src/models/resources/resource.ts new file mode 100644 index 00000000..fd4ae20c --- /dev/null +++ b/src/models/resources/resource.ts @@ -0,0 +1,5 @@ +export interface IResource +{ + id: number; + slug: string; +} \ No newline at end of file diff --git a/src/videoSupport/playbackMethodDetector.ts b/src/videoSupport/playbackMethodDetector.ts index cca418ca..df8dcf85 100644 --- a/src/videoSupport/playbackMethodDetector.ts +++ b/src/videoSupport/playbackMethodDetector.ts @@ -6,7 +6,7 @@ export enum method direct = "Direct Play", transmux = "Transmux", transcode = "Transcode" -}; +} export class SupportList {