diff --git a/src/Ombi/ClientApp/package.json b/src/Ombi/ClientApp/package.json index 1ff60c05a..b18013c83 100644 --- a/src/Ombi/ClientApp/package.json +++ b/src/Ombi/ClientApp/package.json @@ -1,70 +1,71 @@ { - "name": "ombi", - "version": "3.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve --port 3578 --configuration hmr", - "build": "node --max_old_space_size=6144 node_modules/@angular/cli/bin/ng build -c production", - "lint": "ng lint", - "docs:json": "compodoc -p ./tsconfig.json -e json -d .", - "storybook": "start-storybook -p 6006", - "chromatic": "chromatic --exit-zero-on-changes", - "storybookbuild": "yarn build-storybook" - }, - "private": true, - "dependencies": { - "@angular/animations": "^16.2.12", - "@angular/cdk": "^14.2.7", - "@angular/common": "^16.2.12", - "@angular/compiler": "^16.2.12", - "@angular/core": "^16.2.12", - "@angular/forms": "^16.2.12", - "@angular/material": "^14.2.7", - "@angular/platform-browser": "^16.2.12", - "@angular/platform-browser-dynamic": "^16.2.12", - "@angular/platform-server": "^16.2.12", - "@angular/router": "^16.2.12", - "@angularclass/hmr": "^3.0.0", - "@auth0/angular-jwt": "^5.0.2", - "@fortawesome/fontawesome-free": "^6.4.2", - "@microsoft/signalr": "^6.0.23", - "@ngx-translate/core": "^14.0.0", - "@ngx-translate/http-loader": "^7.0.0", - "@ngxs/devtools-plugin": "3.8.1", - "@ngxs/store": "3.8.1", - "@types/jquery": "^3.5.23", - "@yellowspot/ng-truncate": "^2.0.0", - "angularx-qrcode": "^15.0.0", - "bootstrap": "^4.2.1", - "core-js": "^2.5.4", - "jquery": "3.7.1", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "ng2-cookies": "^1.0.12", - "ngx-clipboard": "^12.1.0", - "ngx-infinite-scroll": "^9.0.0", - "ngx-moment": "^3.0.1", - "ngx-order-pipe": "^2.2.0", - "popper.js": "^1.14.3", - "primeicons": "^6.0.1", - "primeng": "^15.4.1", - "rxjs": "^7.5.4", - "ts-md5": "^1.2.7", - "zone.js": "~0.13.2" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^16.2.12", - "@angular/cli": "^16.2.12", - "@angular/compiler-cli": "^16.2.12", - "@babel/core": "^7.18.9", - "@compodoc/compodoc": "^1.1.19", - "@storybook/angular": "^6.5.9", - "chromatic": "^6.7.1", - "typescript": "~5.1.6" - }, - "optionalDependencies": { - "protractor": "~5.4.0", - "ts-node": "~5.0.1", - "tslint": "^5.12.0" - } -} \ No newline at end of file + "name": "ombi", + "version": "4.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve --port 3578 --configuration hmr", + "build": "node --max_old_space_size=6144 node_modules/@angular/cli/bin/ng build -c production", + "lint": "ng lint", + "docs:json": "compodoc -p ./tsconfig.json -e json -d .", + "storybook": "start-storybook -p 6006", + "chromatic": "chromatic --exit-zero-on-changes", + "storybookbuild": "yarn build-storybook" + }, + "private": true, + "dependencies": { + "@angular/animations": "^16.2.12", + "@angular/cdk": "^14.2.7", + "@angular/common": "^16.2.12", + "@angular/compiler": "^16.2.12", + "@angular/core": "^16.2.12", + "@angular/forms": "^16.2.12", + "@angular/material": "^14.2.7", + "@angular/platform-browser": "^16.2.12", + "@angular/platform-browser-dynamic": "^16.2.12", + "@angular/platform-server": "^16.2.12", + "@angular/router": "^16.2.12", + "@angularclass/hmr": "^3.0.0", + "@auth0/angular-jwt": "^5.0.2", + "@fortawesome/fontawesome-free": "^6.4.2", + "@microsoft/signalr": "^6.0.23", + "@ngx-translate/core": "^14.0.0", + "@ngx-translate/http-loader": "^7.0.0", + "@ngxs/devtools-plugin": "3.8.1", + "@ngxs/store": "3.8.1", + "@types/jquery": "^3.5.23", + "@yellowspot/ng-truncate": "^2.0.0", + "angularx-qrcode": "^16.0.0", + "bootstrap": "^4.2.1", + "core-js": "^2.5.4", + "date-fns": "2.30.0", + "jquery": "3.7.1", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "ng2-cookies": "^1.0.12", + "ngx-clipboard": "^16.0.0", + "ngx-date-fns": "^11.0.0", + "ngx-infinite-scroll": "^17.0.0", + "popper.js": "^1.14.3", + "primeicons": "^6.0.1", + "primeng": "^15.4.1", + "rxjs": "^7.5.4", + "ts-md5": "^1.2.7", + "zone.js": "0.14.3" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^16.2.12", + "@angular/cli": "^16.2.12", + "@angular/compiler-cli": "^16.2.12", + "@babel/core": "^7.18.9", + "@compodoc/compodoc": "^1.1.19", + "@storybook/angular": "^6.5.9", + "@types/node": "^20.11.17", + "chromatic": "^6.7.1", + "typescript": "5.2.2" + }, + "optionalDependencies": { + "protractor": "~5.4.0", + "ts-node": "~5.0.1", + "tslint": "^5.12.0" + } +} diff --git a/src/Ombi/ClientApp/src/app/components/detailed-card/detailed-card.component.html b/src/Ombi/ClientApp/src/app/components/detailed-card/detailed-card.component.html index 29ac3699e..7eea11b38 100644 --- a/src/Ombi/ClientApp/src/app/components/detailed-card/detailed-card.component.html +++ b/src/Ombi/ClientApp/src/app/components/detailed-card/detailed-card.component.html @@ -14,7 +14,7 @@

{{'MediaDetails.RequestedBy' | translate}} {{request.username}}

-

{{'MediaDetails.OnDate' | translate}} {{request.requestDate | amFromUtc | amLocal | amUserLocale | amDateFormat: 'l LT'}}

+

{{'MediaDetails.OnDate' | translate}} {{request.requestDate | dfnsFormat: 'Ppp'}}

{{'MediaDetails.Status' | translate}} {{getStatus(request) | translate}}

diff --git a/src/Ombi/ClientApp/src/app/components/image-background/image-background.component.ts b/src/Ombi/ClientApp/src/app/components/image-background/image-background.component.ts index 2b8edf077..b0be81677 100644 --- a/src/Ombi/ClientApp/src/app/components/image-background/image-background.component.ts +++ b/src/Ombi/ClientApp/src/app/components/image-background/image-background.component.ts @@ -1,43 +1,42 @@ -import { OmbiCommonModules } from "../modules"; -import { Component, OnDestroy, OnInit } from "@angular/core"; -import { DomSanitizer } from "@angular/platform-browser"; -import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; -import { ImageService } from "../../services"; -import { fadeInOutAnimation } from "app/animations/fadeinout"; +import { OmbiCommonModules } from '../modules'; +import { Component, OnDestroy, OnInit } from '@angular/core'; +import { DomSanitizer } from '@angular/platform-browser'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { ImageService } from '../../services'; +import { fadeInOutAnimation } from 'app/animations/fadeinout'; @Component({ - standalone: true, - selector: 'ombi-image-background', - templateUrl: './image-background.component.html', - styleUrls: ['./image-background.component.scss'], - imports: [...OmbiCommonModules, BrowserAnimationsModule], - providers: [ ImageService ], - animations: [ fadeInOutAnimation ], - }) - export class ImageBackgroundComponent implements OnInit, OnDestroy { + standalone: true, + selector: 'ombi-image-background', + templateUrl: './image-background.component.html', + styleUrls: ['./image-background.component.scss'], + imports: [...OmbiCommonModules, BrowserAnimationsModule], + providers: [ImageService], + animations: [fadeInOutAnimation], +}) +export class ImageBackgroundComponent implements OnInit, OnDestroy { + public background: any; + public name: string; + private timer: any; - public background: any; - public name: string; - private timer: NodeJS.Timeout; + constructor(private images: ImageService, private sanitizer: DomSanitizer) {} - constructor(private images: ImageService, private sanitizer: DomSanitizer) { } + public ngOnDestroy(): void { + clearTimeout(this.timer); + } - public ngOnDestroy(): void { - clearTimeout(this.timer); - } + public ngOnInit(): void { + this.cycleBackground(); - public ngOnInit(): void { - this.cycleBackground(); + this.timer = setInterval(() => { + this.cycleBackground(); + }, 30000); + } - this.timer = setInterval(() => { - this.cycleBackground(); - }, 30000); - } - - private cycleBackground() { - this.images.getRandomBackgroundWithInfo().subscribe((x) => { - this.background = this.sanitizer.bypassSecurityTrustStyle("url(" + x.url + ")"); - this.name = x.name; - }); - } - } \ No newline at end of file + private cycleBackground() { + this.images.getRandomBackgroundWithInfo().subscribe((x) => { + this.background = this.sanitizer.bypassSecurityTrustStyle('url(' + x.url + ')'); + this.name = x.name; + }); + } +} diff --git a/src/Ombi/ClientApp/src/app/components/modules.ts b/src/Ombi/ClientApp/src/app/components/modules.ts index b60804794..90d8b8d9d 100644 --- a/src/Ombi/ClientApp/src/app/components/modules.ts +++ b/src/Ombi/ClientApp/src/app/components/modules.ts @@ -1,4 +1,3 @@ -import { CommonModule } from "@angular/common"; -import { MomentModule } from "ngx-moment"; +import { CommonModule } from '@angular/common'; -export const OmbiCommonModules = [ CommonModule, MomentModule ]; \ No newline at end of file +export const OmbiCommonModules = [CommonModule]; diff --git a/src/Ombi/ClientApp/src/app/issues/components/details-group/details-group.component.html b/src/Ombi/ClientApp/src/app/issues/components/details-group/details-group.component.html index 74cc041d3..6d443d0d6 100644 --- a/src/Ombi/ClientApp/src/app/issues/components/details-group/details-group.component.html +++ b/src/Ombi/ClientApp/src/app/issues/components/details-group/details-group.component.html @@ -1,28 +1,42 @@ - - {{issue.subject}} - {{'Issues.UserOnDate' | translate: { user: issue.userReported?.userName, date: issue.createdDate | amLocal | amUserLocale | amDateFormat: 'LL' } }} - {{issue.issueCategory.value}} - - -

- {{issue.description}} -

-
- - -
- - + + {{ issue.subject }} + {{ + 'Issues.UserOnDate' | translate: { user: issue.userReported?.userName, date: issue.createdDate | dfnsFormat: 'PP' } + }} + {{ issue.issueCategory.value }} + + +

+ {{ issue.description }} +

+
+ + +
+ + - + - - -
+
+ +
- diff --git a/src/Ombi/ClientApp/src/app/issues/issueDetails.component.html b/src/Ombi/ClientApp/src/app/issues/issueDetails.component.html index 58d31cffa..4835a70cb 100644 --- a/src/Ombi/ClientApp/src/app/issues/issueDetails.component.html +++ b/src/Ombi/ClientApp/src/app/issues/issueDetails.component.html @@ -1,95 +1,124 @@
-
-
-
-

{{issue.title}}

-
- poster +
+
+
+

{{ issue.title }}

+
+ poster -
- {{IssueStatus[issue.status]}} - {{IssueStatus[issue.status]}} - {{IssueStatus[issue.status]}} -
- {{issue.issueCategory.value}} -
- -

{{'Issues.ReportedBy' | translate}}:

-

{{'Issues.ReportedBy' | translate}}:

-
- -

{{issue.userReported.alias}}

-

{{issue.userReported.userName}}

-
-
-

{{'Issues.Subject' | translate}}:

-

{{issue.subject}}

-
-
- -
- -
-
+
+ {{ + IssueStatus[issue.status] + }} + {{ + IssueStatus[issue.status] + }} + {{ + IssueStatus[issue.status] + }} +
+ {{ issue.issueCategory.value }} +
+ +

{{ 'Issues.ReportedBy' | translate }}:

+

{{ 'Issues.ReportedBy' | translate }}:

+
+ +

{{ issue.userReported.alias }}

+

{{ issue.userReported.userName }}

+
+
+

{{ 'Issues.Subject' | translate }}:

+

{{ issue.subject }}

+
+
+ +
+ +
+
+
+
+
+
+
+
+

{{ 'Issues.Comments' | translate }}

+
+
+
+
+
+
+

+
+
+
-
+
+
+
+ +

{{ comment.comment }}

+ +
+
+
+
+ +
+
+
- -
-
-
-
-
-

- {{'Issues.Comments' | translate}} -

-
-
- -
-
-
- -
-

-
-
-
- -
-
- -
-

{{comment.comment}}

- -
-
-
- -
- -
-
-
- -
-
-
- -
-
- -
-
-
-
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+
+
+
diff --git a/src/Ombi/ClientApp/src/app/issues/issues.module.ts b/src/Ombi/ClientApp/src/app/issues/issues.module.ts index 4bf232f25..ece318215 100644 --- a/src/Ombi/ClientApp/src/app/issues/issues.module.ts +++ b/src/Ombi/ClientApp/src/app/issues/issues.module.ts @@ -1,47 +1,34 @@ -import { NgModule } from "@angular/core"; -import { RouterModule, Routes } from "@angular/router"; +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; // import { NbChatModule, NbThemeModule } from '@nebular/theme'; -import { OrderModule } from "ngx-order-pipe"; +import { AuthGuard } from '../auth/auth.guard'; -import { AuthGuard } from "../auth/auth.guard"; +import { SharedModule } from '../shared/shared.module'; -import { SharedModule } from "../shared/shared.module"; +import { IssueDetailsComponent } from './issueDetails.component'; +import { IssuesComponent } from './issues.component'; +import { IssuesTableComponent } from './issuestable.component'; +import { IssuesDetailsComponent } from './components/details/details.component'; -import { IssueDetailsComponent } from "./issueDetails.component"; -import { IssuesComponent } from "./issues.component"; -import { IssuesTableComponent } from "./issuestable.component"; -import { IssuesDetailsComponent } from "./components/details/details.component"; +import { PipeModule } from '../pipes/pipe.module'; -import { PipeModule } from "../pipes/pipe.module"; - -import * as fromComponents from "./components"; +import * as fromComponents from './components'; const routes: Routes = [ - { path: "", component: IssuesComponent, canActivate: [AuthGuard] }, - { path: ":providerId", component: IssuesDetailsComponent, canActivate: [AuthGuard] }, + { path: '', component: IssuesComponent, canActivate: [AuthGuard] }, + { path: ':providerId', component: IssuesDetailsComponent, canActivate: [AuthGuard] }, ]; @NgModule({ - imports: [ - RouterModule.forChild(routes), - OrderModule, - PipeModule, - SharedModule, - // NbChatModule, - ], - declarations: [ - IssuesComponent, - IssueDetailsComponent, - IssuesTableComponent, - ...fromComponents.components - ], - exports: [ - RouterModule, - ], - providers: [ - ...fromComponents.providers - ], - + imports: [ + RouterModule.forChild(routes), + PipeModule, + SharedModule, + // NbChatModule, + ], + declarations: [IssuesComponent, IssueDetailsComponent, IssuesTableComponent, ...fromComponents.components], + exports: [RouterModule], + providers: [...fromComponents.providers], }) -export class IssuesModule { } +export class IssuesModule {} diff --git a/src/Ombi/ClientApp/src/app/media-details/components/movie/panels/movie-information-panel.component.html b/src/Ombi/ClientApp/src/app/media-details/components/movie/panels/movie-information-panel.component.html index db6a78b5a..232f46613 100644 --- a/src/Ombi/ClientApp/src/app/media-details/components/movie/panels/movie-information-panel.component.html +++ b/src/Ombi/ClientApp/src/app/media-details/components/movie/panels/movie-information-panel.component.html @@ -1,137 +1,138 @@
-
- - {{movie.voteAverage | number:'1.0-1'}}/10 - - - - {{ratings.critics_score}}% - - - - {{ratings.audience_score}}% - -
-
-
- {{'MediaDetails.StreamingOn' | translate }} -
- - - -
-
-
-
- {{'MediaDetails.Status' | translate }} - {{ this.movie.status | translateStatus }} -
-
- {{'MediaDetails.Availability' | translate }} - {{'Common.Available' | translate}} - {{'Common.NotAvailable' | translate}} -
-
- {{'MediaDetails.RequestStatus' | translate }} -
{{getStatus(movie) | translate}}
-
- -
- {{'MediaDetails.RequestedBy' | translate }} - {{request.requestedUser.userAlias}} -
- -
- {{'MediaDetails.RequestDate' | translate }} - {{request.requestedDate4k | amUserLocale | amDateFormat: 'LL'}} - {{request.requestedDate | amUserLocale | amDateFormat: 'LL'}} -
- -
- {{'MediaDetails.RequestSource' | translate }} - {{RequestSource[request.source]}} -
- -
- {{'MediaDetails.DeniedReason' | translate }} -
- {{request.deniedReason}} -
-
- {{request.deniedReason4K}} -
-
- - -
- {{'MediaDetails.Quality' | translate }} -
{{movie.quality | quality}}
-
- -
- {{'MediaDetails.Quality' | translate }}  - {{"4K" | quality}} -
- -
- {{'MediaDetails.RootFolderOverride' | translate }} -
{{request.rootPathOverrideTitle}}
-
-
- {{'MediaDetails.QualityOverride' | translate }} -
{{request.qualityOverrideTitle}}
-
- - - -
- - {{'MediaDetails.TheatricalRelease' | translate }} - {{movie.releaseDate | amUserLocale | amDateFormat: 'LL': 'mediumDate'}} - -
- {{'MediaDetails.DigitalRelease' | translate }} - {{movie.digitalReleaseDate | amUserLocale | amDateFormat: 'LL': 'mediumDate'}} -
- -
- {{'MediaDetails.Votes' | translate }} - {{movie.voteCount | thousandShort: 1}} -
-
- {{'MediaDetails.Runtime' | translate }} - {{'MediaDetails.Minutes' | translate:{runtime: movie.runtime} }} -
-
- {{'MediaDetails.Revenue' | translate }} - {{movie.revenue | currency: 'USD'}} -
-
- {{'MediaDetails.Budget' | translate }} - {{movie.budget | currency: 'USD'}} -
- -
-
- {{'MediaDetails.GenresLabel' | translate }} -
- - - {{genre.name}} - - -
-
- -
-
- {{'MediaDetails.Keywords' | translate }} - - - {{keyword.name}} - - -
+
+ + {{ movie.voteAverage | number: '1.0-1' }}/10 + + + + {{ ratings.critics_score }}% + + + + {{ ratings.audience_score }}% + +
+
+
+ {{ 'MediaDetails.StreamingOn' | translate }} +
+ + + +
+
+
+
+ {{ 'MediaDetails.Status' | translate }} + {{ this.movie.status | translateStatus }} +
+
+ {{ 'MediaDetails.Availability' | translate }} + {{ 'Common.Available' | translate }} + {{ 'Common.NotAvailable' | translate }} +
+
+ {{ 'MediaDetails.RequestStatus' | translate }} +
{{ getStatus(movie) | translate }}
+
+ +
+ {{ 'MediaDetails.RequestedBy' | translate }} + {{ request.requestedUser.userAlias }} +
+ +
+ {{ 'MediaDetails.RequestDate' | translate }} + {{ request.requestedDate4k | dfnsFormat: 'PP' }} + {{ request.requestedDate | dfnsFormat: 'PP' }} +
+ +
+ {{ 'MediaDetails.RequestSource' | translate }} + {{ RequestSource[request.source] }} +
+ +
+ {{ 'MediaDetails.DeniedReason' | translate }} +
+ {{ request.deniedReason }} +
+
+ {{ request.deniedReason4K }} +
+
+ +
+ {{ 'MediaDetails.Quality' | translate }} +
{{ movie.quality | quality }}
+
+ +
+ {{ 'MediaDetails.Quality' | translate }}  + {{ '4K' | quality }} +
+ +
+ {{ 'MediaDetails.RootFolderOverride' | translate }} +
{{ request.rootPathOverrideTitle }}
+
+
+ {{ 'MediaDetails.QualityOverride' | translate }} +
{{ request.qualityOverrideTitle }}
+
+ +
+ + {{ 'MediaDetails.TheatricalRelease' | translate }} + {{ movie.releaseDate | dfnsFormat: 'PP' }} + +
+ {{ 'MediaDetails.DigitalRelease' | translate }} + {{ movie.digitalReleaseDate | dfnsFormat: 'PP' }} +
+ +
+ {{ 'MediaDetails.Votes' | translate }} + {{ movie.voteCount | thousandShort: 1 }} +
+
+ {{ 'MediaDetails.Runtime' | translate }} + {{ 'MediaDetails.Minutes' | translate: { runtime: movie.runtime } }} +
+
+ {{ 'MediaDetails.Revenue' | translate }} + {{ movie.revenue | currency: 'USD' }} +
+
+ {{ 'MediaDetails.Budget' | translate }} + {{ movie.budget | currency: 'USD' }} +
+ +
+
+ {{ 'MediaDetails.GenresLabel' | translate }} +
+ + + {{ genre.name }} + + +
+
+ +
+
+ {{ 'MediaDetails.Keywords' | translate }} + + + {{ keyword.name }} + + +
+
diff --git a/src/Ombi/ClientApp/src/app/media-details/components/shared/top-banner/top-banner.component.html b/src/Ombi/ClientApp/src/app/media-details/components/shared/top-banner/top-banner.component.html index 84ab2da3d..d31c97153 100644 --- a/src/Ombi/ClientApp/src/app/media-details/components/shared/top-banner/top-banner.component.html +++ b/src/Ombi/ClientApp/src/app/media-details/components/shared/top-banner/top-banner.component.html @@ -1,21 +1,19 @@ +
+
+
-
-
-
+
+
+
+
+

+ {{ title }} + ({{ releaseDate | dfnsFormat: 'P' }}) +

-
-
-
-
-

{{title}} - - ({{releaseDate | amLocal | amDateFormat: 'YYYY'}}) -

- -

{{tagline}}

-
-
-
-
-
\ No newline at end of file +

{{ tagline }}

+ + + + +
diff --git a/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel/tv-information-panel.component.html b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel/tv-information-panel.component.html index 2ce0b0e21..0fa379759 100644 --- a/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel/tv-information-panel.component.html +++ b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-information-panel/tv-information-panel.component.html @@ -1,82 +1,85 @@
-
-
- - {{tv.rating * 10 | number : '1.2-2'}}% - - - {{ratings.score}}% - -
-
-
-
- {{'MediaDetails.StreamingOn' | translate }} -
- - - -
-
-
-
-
- {{'MediaDetails.Status' | translate }} - {{ tv.status | translateStatus }} -
- {{'MediaDetails.FirstAired' | translate }} - {{tv.firstAired | amLocal | amUserLocale | amDateFormat: 'LL' }} -
+
+
+ + {{ tv.rating * 10 | number: '1.2-2' }}% + + + + {{ ratings.score }}% + +
+
+
+
+ {{ 'MediaDetails.StreamingOn' | translate }} +
+ + + +
+
+
+
+
+ {{ 'MediaDetails.Status' | translate }} + {{ tv.status | translateStatus }} +
+ {{ 'MediaDetails.FirstAired' | translate }} + {{ tv.firstAired | dfnsFormat: 'PP' }} +
-
- {{'MediaDetails.Seasons' | translate }} - {{seasonCount}} -
-
- {{'MediaDetails.Episodes' | translate }} - {{totalEpisodes}} -
+
+ {{ 'MediaDetails.Seasons' | translate }} + {{ seasonCount }} +
+
+ {{ 'MediaDetails.Episodes' | translate }} + {{ totalEpisodes }} +
-
- {{'MediaDetails.RootFolderOverride' | translate }} -
{{request.rootPathOverrideTitle}}
-
-
- {{'MediaDetails.QualityOverride' | translate }} -
{{request.qualityOverrideTitle}}
-
+
+ {{ 'MediaDetails.RootFolderOverride' | translate }} +
{{ request.rootPathOverrideTitle }}
+
+
+ {{ 'MediaDetails.QualityOverride' | translate }} +
{{ request.qualityOverrideTitle }}
+
-
- {{'MediaDetails.Runtime' | translate }} - {{'MediaDetails.Minutes' | translate:{ runtime: tv.runtime} }} -
+
+ {{ 'MediaDetails.Runtime' | translate }} + {{ 'MediaDetails.Minutes' | translate: { runtime: tv.runtime } }} +
-
- {{'MediaDetails.Network' | translate }} - {{tv.network.name}} -
+
+ {{ 'MediaDetails.Network' | translate }} + {{ tv.network.name }} +
+
+ {{ 'MediaDetails.GenresLabel' | translate }} +
+ + + {{ genre.name }} + + +
+
-
- {{'MediaDetails.GenresLabel' | translate }} -
- - - {{genre.name}} - - -
-
- -
-
- {{'MediaDetails.Keywords' | translate }} - - - {{keyword.name}} - - -
- +
+
+ {{ 'MediaDetails.Keywords' | translate }} + + + {{ keyword.name }} + + +
- diff --git a/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-request-grid/tv-request-grid.component.html b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-request-grid/tv-request-grid.component.html index 926e73901..f911b2708 100644 --- a/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-request-grid/tv-request-grid.component.html +++ b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-request-grid/tv-request-grid.component.html @@ -1,69 +1,73 @@ - - - - - -
- {{ 'Requests.Season' | translate }} {{season.seasonNumber}} -
-
- - - -

{{season.overview}}

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - # {{element.episodeNumber}} {{ 'Requests.GridTitle' | translate }} {{element.title}} {{ 'Requests.AirDate' | translate }} {{element.airDate | amLocal | amUserLocale | amDateFormat: 'L' }} {{ 'Requests.GridStatus' | translate }} -
- {{ep.requestStatus | translate}} -
-
-
- -
+ + + +
+ {{ 'Requests.Season' | translate }} {{ season.seasonNumber }} +
+
+ + + +

{{ season.overview }}

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + #{{ element.episodeNumber }}{{ 'Requests.GridTitle' | translate }}{{ element.title }}{{ 'Requests.AirDate' | translate }}{{ element.airDate | dfnsFormat: 'P' }}{{ 'Requests.GridStatus' | translate }} +
+ {{ ep.requestStatus | translate }} +
+
+
+
- + + + - + - + - - \ No newline at end of file + + + diff --git a/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-requests/tv-requests-panel.component.html b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-requests/tv-requests-panel.component.html index ea34849d0..ac5e996b0 100644 --- a/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-requests/tv-requests-panel.component.html +++ b/src/Ombi/ClientApp/src/app/media-details/components/tv/panels/tv-requests/tv-requests-panel.component.html @@ -1,66 +1,69 @@ - - - -
{{ request.requestStatus | translate }}
-
- - {{'MediaDetails.RequestedByOn' | translate: { - user: request.requestedUser.userAlias, - date: request.requestedDate | amLocal | amUserLocale | amDateFormat: 'LL' } }} - - {{request.deniedReason}} -  {{'MediaDetails.RequestSource' | translate }} {{RequestSource[request.source]}} - -
+ + + +
{{ request.requestStatus | translate }}
+
+ + {{ + 'MediaDetails.RequestedByOn' + | translate + : { + user: request.requestedUser.userAlias, + date: request.requestedDate | dfnsFormat: 'PP' + } + }} + - {{ request.deniedReason }} +  {{ 'MediaDetails.RequestSource' | translate }} {{ RequestSource[request.source] }} + +
+ + + + + + + - - + + + + -
#{{ element.episodeNumber }}{{ 'Requests.GridTitle' | translate }}{{ element.title }}
+ + + + + + + + - - - - - - - - - - - - - - - - - - - - - - -
{{ 'Requests.AirDate' | translate }}{{ element.airDate | dfnsFormat: 'P' }}{{ 'Requests.GridStatus' | translate }} + {{ request.requestStatus | translate }} + # {{element.episodeNumber}} {{ 'Requests.GridTitle' | translate }} {{element.title}} {{ 'Requests.AirDate' | translate }} {{element.airDate | amLocal | amUserLocale | amDateFormat: 'L' }} {{ 'Requests.GridStatus' | translate }} - {{ request.requestStatus | translate }} -
-
- -
- -
- - - - - -
-
- -
- - -
+ + + + + +
+ + + + + +
+
+ +
+
diff --git a/src/Ombi/ClientApp/src/app/pipes/OrderPipe.ts b/src/Ombi/ClientApp/src/app/pipes/OrderPipe.ts new file mode 100644 index 000000000..558dd4546 --- /dev/null +++ b/src/Ombi/ClientApp/src/app/pipes/OrderPipe.ts @@ -0,0 +1,11 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import { orderBy as _orderBy } from 'lodash-es'; + +@Pipe({ + name: 'orderBy', +}) +export class OrderPipe implements PipeTransform { + transform(data: T[], orderBy: string, direction: 'asc' | 'desc' = 'asc'): T[] { + return _orderBy(data, orderBy, direction); + } +} diff --git a/src/Ombi/ClientApp/src/app/pipes/UserLocalePipe.ts b/src/Ombi/ClientApp/src/app/pipes/UserLocalePipe.ts deleted file mode 100644 index ec59c21c9..000000000 --- a/src/Ombi/ClientApp/src/app/pipes/UserLocalePipe.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Pipe, PipeTransform } from "@angular/core"; -import * as moment from "moment"; - -const momentConstructor = moment; - -@Pipe({ name: "amUserLocale" }) -export class UserLocalePipe implements PipeTransform { - transform(value: moment.MomentInput): moment.Moment { - const locale = navigator.language; - return momentConstructor(value).locale(locale); - } -} diff --git a/src/Ombi/ClientApp/src/app/pipes/pipe.module.ts b/src/Ombi/ClientApp/src/app/pipes/pipe.module.ts index 6f063c91c..7c159f269 100644 --- a/src/Ombi/ClientApp/src/app/pipes/pipe.module.ts +++ b/src/Ombi/ClientApp/src/app/pipes/pipe.module.ts @@ -1,22 +1,21 @@ -import { ModuleWithProviders, NgModule } from "@angular/core"; -import { HumanizePipe } from "./HumanizePipe"; -import { TranslateStatusPipe } from "./TranslateStatus"; -import { ThousandShortPipe } from "./ThousandShortPipe"; -import { SafePipe } from "./SafePipe"; -import { QualityPipe } from "./QualityPipe"; -import { UserLocalePipe } from "./UserLocalePipe"; +import { ModuleWithProviders, NgModule } from '@angular/core'; +import { HumanizePipe } from './HumanizePipe'; +import { TranslateStatusPipe } from './TranslateStatus'; +import { ThousandShortPipe } from './ThousandShortPipe'; +import { SafePipe } from './SafePipe'; +import { QualityPipe } from './QualityPipe'; +import { OrderPipe } from './OrderPipe'; @NgModule({ - imports: [], - declarations: [HumanizePipe, ThousandShortPipe, SafePipe, QualityPipe, UserLocalePipe, TranslateStatusPipe ], - exports: [HumanizePipe, ThousandShortPipe, SafePipe, QualityPipe, UserLocalePipe, TranslateStatusPipe ], + imports: [], + declarations: [HumanizePipe, ThousandShortPipe, SafePipe, QualityPipe, TranslateStatusPipe, OrderPipe], + exports: [HumanizePipe, ThousandShortPipe, SafePipe, QualityPipe, TranslateStatusPipe, OrderPipe], }) export class PipeModule { - - public static forRoot(): ModuleWithProviders { - return { - ngModule: PipeModule, - providers: [], - }; - } + public static forRoot(): ModuleWithProviders { + return { + ngModule: PipeModule, + providers: [], + }; + } } diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/albums-grid/albums-grid.component.html b/src/Ombi/ClientApp/src/app/requests-list/components/albums-grid/albums-grid.component.html index c98270e7b..646d4de56 100644 --- a/src/Ombi/ClientApp/src/app/requests-list/components/albums-grid/albums-grid.component.html +++ b/src/Ombi/ClientApp/src/app/requests-list/components/albums-grid/albums-grid.component.html @@ -1,72 +1,128 @@
- + + +
+
+ + + + + +
+
- -
-
- - - - - -
-
+
+
+ + + 10 + 15 + 30 + 100 + + +
+
+ + + + + + + + + + -
-
- - - 10 - 15 - 30 - 100 - - -
-
- -
{{ 'Requests.ArtistName' | translate }}{{ element.artistName }}{{ 'Requests.AlbumName' | translate }}{{ element.title }} ({{ element.releaseDate | dfnsFormat: 'P' }})
+ + + + + + + + + + + + - - - - - - - - + + + + - - - - + + +
{{ 'Requests.RequestedBy' | translate }}{{ element.requestedUser?.userAlias }}{{ 'Requests.RequestDate' | translate }}{{ element.requestedDate | dfnsFormat: 'PP' }}{{ 'Requests.RequestStatus' | translate }}{{ element.requestStatus | translate }} {{ 'Requests.ArtistName' | translate}} {{element.artistName}} {{ 'Requests.AlbumName' | translate}} {{element.title}} ({{element.releaseDate | amLocal | amDateFormat: 'YYYY'}}) + {{ + 'Requests.Details' | translate + }} + + {{'Requests.RequestedBy' | translate}} {{element.requestedUser?.userAlias}}
- - {{ 'Requests.RequestDate' | translate}} - {{element.requestedDate | amLocal | amUserLocale | amDateFormat: 'LL'}} - - - - {{ 'Requests.RequestStatus' | translate}} - {{element.requestStatus | translate}} - - - - - - {{ 'Requests.Details' | translate}} - - - - - - - - - +
diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.html b/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.html index 111140321..389d814ee 100644 --- a/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.html +++ b/src/Ombi/ClientApp/src/app/requests-list/components/movies-grid/movies-grid.component.html @@ -1,123 +1,198 @@
- - - - -
-
- - - - - -
-
- -
-
- - - 10 - 15 - 30 - 100 - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - {{ 'Requests.RequestsTitle' | translate}} {{element.title}} ({{element.releaseDate | amLocal | amDateFormat: 'YYYY'}}) {{'Requests.RequestedBy' | translate}} {{element.requestedByAlias ? element.requestedByAlias : element.requestedUser?.userAlias}} {{ 'Requests.RequestDate' | translate}} {{getRequestDate(element) | amLocal | amUserLocale | amDateFormat: 'LL'}} {{ 'Requests.Status' | translate}} {{element.status |translateStatus }} {{ 'Requests.Has4KRequest' | translate}} - - - {{ 'Requests.RequestStatus' | translate}} {{element.requestStatus | translate}} - {{ 'Requests.Watched' | translate}} - - - - - {{ 'Requests.Details' | translate}} - {{ 'Requests.Options' | translate}} -
- - + + + +
+
+ + + + + +
+
+ +
+
+ + + 10 + 15 + 30 + 100 + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + {{ 'Requests.RequestsTitle' | translate }}{{ element.title }} ({{ element.releaseDate | dfnsFormat: 'P' }}){{ 'Requests.RequestedBy' | translate }} + {{ element.requestedByAlias ? element.requestedByAlias : element.requestedUser?.userAlias }} + {{ 'Requests.RequestDate' | translate }}{{ getRequestDate(element) | dfnsFormat: 'PP' }}{{ 'Requests.Status' | translate }}{{ element.status | translateStatus }}{{ 'Requests.Has4KRequest' | translate }} + + + {{ 'Requests.RequestStatus' | translate }}{{ element.requestStatus | translate }} + {{ 'Requests.Watched' | translate }} + + + + + {{ + 'Requests.Details' | translate + }} + + {{ 'Requests.Options' | translate }} +
+ +
- - - - - - - + + + + + + + + + diff --git a/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.html b/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.html index 7ee45dcae..12b2f8d0b 100644 --- a/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.html +++ b/src/Ombi/ClientApp/src/app/requests-list/components/tv-grid/tv-grid.component.html @@ -1,89 +1,152 @@
+ - +
+
+ + + + + +
+
+
+
+ + + 10 + 15 + 30 + 100 + + +
+
-
-
- - - - - -
-
+ + + + + -
-
- - - 10 - 15 - 30 - 100 - - -
-
+ + + + -
{{ 'Requests.RequestsTitle' | translate }}{{ element.parentRequest.title }}{{ 'Requests.RequestedBy' | translate }} + {{ element.requestedByAlias ? element.requestedByAlias : element.requestedUser.userAlias }} +
+ + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + +
{{ 'Requests.RequestDate' | translate }} + {{ element.requestedDate | dfnsFormat: 'PP' }} + {{ 'Requests.RequestStatus' | translate }}{{ element.requestStatus | translate }} {{'Requests.RequestsTitle' | translate}} {{element.parentRequest.title}} {{ 'Requests.Status' | translate }} + {{ element.parentRequest.status | translateStatus }} + {{'Requests.RequestedBy' | translate}} {{element.requestedByAlias ? element.requestedByAlias : element.requestedUser.userAlias}} + {{ 'Requests.Watched' | translate }} + + + {{'Requests.RequestDate' | translate}} - {{element.requestedDate | amLocal | amUserLocale | amDateFormat: 'LL'}} - + {{ 'Requests.Details' | translate }} + + {{'Requests.RequestStatus' | translate}} {{element.requestStatus | translate}}
- - {{'Requests.Status' | translate}} - - {{element.parentRequest.status | translateStatus }} - - - - - - {{ 'Requests.Watched' | translate}} - - - - - - - - - - {{'Requests.Details' | translate}} - - - - - - - - - +
diff --git a/src/Ombi/ClientApp/src/app/requests/movierequests.component.html b/src/Ombi/ClientApp/src/app/requests/movierequests.component.html index 4e7ad3628..55969dc57 100644 --- a/src/Ombi/ClientApp/src/app/requests/movierequests.component.html +++ b/src/Ombi/ClientApp/src/app/requests/movierequests.component.html @@ -1,288 +1,316 @@
-
-
-
-
-
-
- - poster - -
- -
- -
-
-
- {{ 'Requests.RequestedBy' | translate }} - {{request.requestedByAlias}} - - {{request.requestedUser.userName}} - {{request.requestedUser.alias}} - {{request.requestedUser.userName}} - -
-
- {{ 'Requests.Status' | translate }} - {{request.status}} -
- -
- {{ 'Requests.RequestStatus' | translate }} - - - - - -
-
- {{ 'Requests.Denied' | translate }} - - -
- - -
{{ 'Requests.TheatricalRelease' | translate: {date: request.releaseDate | - amLocal | amUserLocale | amDateFormat: 'LL'} }}
-
{{ 'Requests.DigitalRelease' | - translate: {date: request.digitalReleaseDate | amLocal | amUserLocale | amDateFormat: 'LL'} }}
-
{{ 'Requests.RequestDate' | translate }} {{request.requestedDate | amLocal - | amUserLocale | amDateFormat: 'LL'}}
-
-
-
-
{{ 'Requests.QualityOverride' | - translate }} - {{request.qualityOverrideTitle}} -
-
{{ 'Requests.RootFolderOverride' | - translate }} - {{request.rootPathOverrideTitle}} -
-
- -
-
-
-
- - - - - - - -
-
-
-
-
- -
- - -
- - - -
- - -
- - - -
- -
- -
-
- - -
- - -
- - - -
-
-
- -
-
- - -
-
-
-
- - - - -
- - +
+
+
+
+
+ poster +
+ +
+ +
+
+
+ {{ 'Requests.RequestedBy' | translate }} + {{ request.requestedByAlias }} + + {{ request.requestedUser.userName }} + {{ request.requestedUser.alias }} + {{ request.requestedUser.userName }} + +
+
+ {{ 'Requests.Status' | translate }} + {{ request.status }} +
+ +
+ {{ 'Requests.RequestStatus' | translate }} + + + + +
+
+ {{ 'Requests.Denied' | translate }} + +
+ +
+ {{ 'Requests.TheatricalRelease' | translate: { date: request.releaseDate | dfnsFormat: 'PP' } }} +
+
+ {{ 'Requests.DigitalRelease' | translate: { date: request.digitalReleaseDate | dfnsFormat: 'PP' } }} +
+
{{ 'Requests.RequestDate' | translate }} {{ request.requestedDate | dfnsFormat: 'PP' }}
+
+
+
+
+ {{ 'Requests.QualityOverride' | translate }} + {{ request.qualityOverrideTitle }} +
+
+ {{ 'Requests.RootFolderOverride' | translate }} + {{ request.rootPathOverrideTitle }} +
+
+
+
+
+ +
+
+
+
+ +
+ + +
+ + + +
+ + +
+ + + +
+ +
+ +
+
+ +
+ + +
+
+
+
+ +
+
+ +
+
+
+
+
+ +
- - Please enter a rejection reason, the user will be notified of this: - - - - - + + Please enter a rejection reason, the user will be notified of this: + + + + + - - + -

{{ 'Requests.Filter' | translate }}

-
-
-

{{ 'Filter.FilterHeaderAvailability' | translate }}

-
-
- - -
-
-
-
- - -
-
-
-
-

{{ 'Filter.FilterHeaderRequestStatus' | translate }}

-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
- - +

{{ 'Requests.Filter' | translate }}

+
+
+

{{ 'Filter.FilterHeaderAvailability' | translate }}

+
+
+ + +
+
+
+
+ + +
+
+
+
+

{{ 'Filter.FilterHeaderRequestStatus' | translate }}

+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
diff --git a/src/Ombi/ClientApp/src/app/requests/music/musicrequests.component.html b/src/Ombi/ClientApp/src/app/requests/music/musicrequests.component.html index 009560d32..80de8354f 100644 --- a/src/Ombi/ClientApp/src/app/requests/music/musicrequests.component.html +++ b/src/Ombi/ClientApp/src/app/requests/music/musicrequests.component.html @@ -1,116 +1,107 @@
-
-
-
-
-
- -
- poster -
- - -
- - -
-
- {{ 'Requests.RequestedBy' | translate }} - {{request.requestedByAlias}} - - {{request.requestedUser.userName}} - {{request.requestedUser.alias}} - {{request.requestedUser.userName}} - -
- -
- {{ 'Requests.RequestStatus' | translate }} - - - - - - - - -
-
- {{ 'Requests.Denied' | translate }} - - -
- - -
{{ 'Requests.ReleaseDate' | translate: {date: request.releaseDate | amLocal | - amDateFormat: 'LL'} }}
-
{{ 'Requests.RequestDate' | translate }} {{request.requestedDate | amLocal - | amDateFormat: 'LL'}}
-
-
- - -
-
- -
-
-
- -
- - - + - - + -
- -
-
- - -
- - -
- - - -
-
-
- -
-
- - -
-
-
-
- - - - -
- - +
+ +
+
+ +
+ + +
+ +
+
+ +
+
+ + + +
+
+ + + - - - + -

{{ 'Requests.Filter' | translate }}

-
-
-

{{ 'Filter.FilterHeaderAvailability' | translate }}

-
-
- - -
-
-
-
- - -
-
-
-
-

{{ 'Filter.FilterHeaderRequestStatus' | translate }}

-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
-
- - +

{{ 'Requests.Filter' | translate }}

+
+
+

{{ 'Filter.FilterHeaderAvailability' | translate }}

+
+
+ + +
+
+
+
+ + +
+
+
+
+

{{ 'Filter.FilterHeaderRequestStatus' | translate }}

+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
- - - - Please enter a rejection reason, the user will be notified of this: - - - - - - \ No newline at end of file + + Please enter a rejection reason, the user will be notified of this: + + + + + + diff --git a/src/Ombi/ClientApp/src/app/requests/tvrequest-children.component.html b/src/Ombi/ClientApp/src/app/requests/tvrequest-children.component.html index abb4f8e18..222a9717a 100644 --- a/src/Ombi/ClientApp/src/app/requests/tvrequest-children.component.html +++ b/src/Ombi/ClientApp/src/app/requests/tvrequest-children.component.html @@ -1,128 +1,167 @@ 
-
-
-
+
+
+
+
+ + {{ child.requestedByAlias }} + + {{ child.requestedUser.userName }} + {{ child.requestedUser.alias }} + {{ child.requestedUser.userName }} + +
-
- - {{child.requestedByAlias}} - - {{child.requestedUser.userName}} - {{child.requestedUser.alias}} - {{child.requestedUser.userName}} - -
+
+ + -
- - +
+ + + + +
+
+ +
+
+
+
+ +
+ + +

{{ 'Requests.Season' | translate }} {{ season.seasonNumber }}

-
- - - - - - -
-
- -
- - -
-
-
- - -
- - -

{{ 'Requests.Season' | translate }} {{season.seasonNumber}}

- - - - - - - - - - - - - - - - - - -
- - # - - - - {{ 'Requests.GridTitle' | translate }} - - - - {{ 'Requests.AirDate' | translate }} - - - - {{ 'Requests.GridStatus' | translate }} - -
- {{ep.episodeNumber}} - - {{ep.title}} - - {{ep.airDate | amLocal | amUserLocale | amDateFormat: 'L' }} - - - - - - -
-
-
- -
-
-
-
-
-
-
-
-
-
- + + + + + + + + + + + + + + + + + +
+ # + + + {{ 'Requests.GridTitle' | translate }} + + + + {{ 'Requests.AirDate' | translate }} + + + + {{ 'Requests.GridStatus' | translate }} + +
+ {{ ep.episodeNumber }} + + {{ ep.title }} + + {{ ep.airDate | dfnsFormat: 'P' }} + + + + + + +
+
+ +
+
+
+ + +
+ +
+
+
+
+
- - Please enter a rejection reason, the user will be notified of this: - - - - - - \ No newline at end of file + + Please enter a rejection reason, the user will be notified of this: + + + + + + diff --git a/src/Ombi/ClientApp/src/app/requests/tvrequests.component.html b/src/Ombi/ClientApp/src/app/requests/tvrequests.component.html index cb484f1a8..55d010326 100644 --- a/src/Ombi/ClientApp/src/app/requests/tvrequests.component.html +++ b/src/Ombi/ClientApp/src/app/requests/tvrequests.component.html @@ -1,112 +1,146 @@ 
-
- -
+
+ +

-
- -
-
-
-
+
+ +
+
+
+
-
+
+ poster +
- poster +
+ +
+
+ Status: + {{ node.status }} +
-
+
Release Date: {{ node.releaseDate | dfnsFormat: 'PP' }}
+
+
+ {{ 'Requests.QualityOverride' | translate }} + {{ node.qualityOverrideTitle }} +
+
+ {{ 'Requests.RootFolderOverride' | translate }} + {{ node.rootPathOverrideTitle }} +
+
- +
+ +
+ +
+ + + +
+ +
+ + + +
+
+ +
+
+
+ +
+ +
-
Release Date: {{node.releaseDate | amLocal | amUserLocale | amDateFormat: 'LL'}}
-
-
{{ 'Requests.QualityOverride' | translate }} - {{node.qualityOverrideTitle}} -
-
{{ 'Requests.RootFolderOverride' | translate }} - {{node.rootPathOverrideTitle}} -
-
+
+
+
-
-
-
- - -
- -
- - - -
- - -
- - - -
- -
- -
-
-
- -
- -
- -
-
- -
- - +
- \ No newline at end of file + diff --git a/src/Ombi/ClientApp/src/app/settings/about/update-dialog.component.html b/src/Ombi/ClientApp/src/app/settings/about/update-dialog.component.html index 5377c463f..657134a3f 100644 --- a/src/Ombi/ClientApp/src/app/settings/about/update-dialog.component.html +++ b/src/Ombi/ClientApp/src/app/settings/about/update-dialog.component.html @@ -1,28 +1,21 @@ - - -

Latest Version: {{data.updateVersionString}}

+

Latest Version: {{ data.updateVersionString }}

-
-
- - - -
-
-
Binary
-
Download
-
-
{{d.name}}
- -
-
- - -Updated at {{data.updateDate | amUserLocale | amDateFormat: 'LL' }} +
+ +
+
+
Binary
+
Download
+
+
+
{{ d.name }}
+ +
+
+ + Updated at {{ data.updateDate | dfnsFormat: 'PP' }}
-
- +
- diff --git a/src/Ombi/ClientApp/src/app/shared/chat-box/chat-box.component.html b/src/Ombi/ClientApp/src/app/shared/chat-box/chat-box.component.html index a8fc88578..0c509edad 100644 --- a/src/Ombi/ClientApp/src/app/shared/chat-box/chat-box.component.html +++ b/src/Ombi/ClientApp/src/app/shared/chat-box/chat-box.component.html @@ -1,25 +1,29 @@ -
-
-
-

{{ "NavigationBar.UserManagement" | translate }}

-
-

{{user}}

-
-
-
-
-
-
-

{{m.username}}

-
-

{{m.message}}

-

{{m.date | amFromUtc | amLocal | amUserLocale | amDateFormat: 'l LT'}}

-
-
-
-
-
- - -
-
\ No newline at end of file +
+
+
+

{{ 'NavigationBar.UserManagement' | translate }}

+
+

{{ user }}

+
+
+
+
+
+
+

{{ m.username }}

+
+

{{ m.message }}

+

{{ m.date | dfnsFormat: 'Ppp' }}

+
+
+
+
+
+ + +
+
+
diff --git a/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.html b/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.html index 7b31832ea..022b0a893 100644 --- a/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.html +++ b/src/Ombi/ClientApp/src/app/shared/episode-request/episode-request.component.html @@ -1,74 +1,93 @@
-
- {{'MediaDetails.EpisodeSelector.NoEpisodes' | translate}} -
-
-
- - - - -
-
- -
-
- - - - - {{ 'MediaDetails.EpisodeSelector.SeasonNumber' | translate: { number: season.seasonNumber } }} - {{ 'MediaDetails.EpisodeSelector.SeasonNumber' | translate: { number: season.seasonNumber } }} - - - - - - -
-
-
- - -
-
-
- {{ep.episodeNumber}} -
-
- {{ep.title}} -
-
- {{ep.airDate | amLocal | amUserLocale | amDateFormat: 'L' }} -
-
- {{ep.airDateDisplay }} -
-
- {{ep.requestStatus | translate}} -
- -
- +
+ {{ 'MediaDetails.EpisodeSelector.NoEpisodes' | translate }} +
+
+
+ - + + +
+
+
+
+ + + + + {{ 'MediaDetails.EpisodeSelector.SeasonNumber' | translate: { number: season.seasonNumber } }} + {{ + 'MediaDetails.EpisodeSelector.SeasonNumber' | translate: { number: season.seasonNumber } + }} + + + + + - -
- - -
+
+
+
+ + +
+
+
+ {{ ep.episodeNumber }} +
+
+ {{ ep.title }} +
+
+ {{ ep.airDate | dfnsFormat: 'P' }} +
+
+ {{ ep.airDateDisplay }} +
+
+ {{ ep.requestStatus | translate }} +
+
+
+
+
-
- - - - -
+
+ +
diff --git a/src/Ombi/ClientApp/src/app/shared/shared.module.ts b/src/Ombi/ClientApp/src/app/shared/shared.module.ts index 14b2e97ad..607072cd9 100644 --- a/src/Ombi/ClientApp/src/app/shared/shared.module.ts +++ b/src/Ombi/ClientApp/src/app/shared/shared.module.ts @@ -1,141 +1,141 @@ -import { FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { AdminRequestDialogComponent } from "./admin-request-dialog/admin-request-dialog.component"; -import { AdvancedSearchDialogComponent } from "./advanced-search-dialog/advanced-search-dialog.component"; -import { CommonModule } from "@angular/common"; -import { DetailsGroupComponent } from "../issues/components/details-group/details-group.component"; -import { EpisodeRequestComponent } from "./episode-request/episode-request.component"; -import { GenreSelectComponent } from "./components/genre-select/genre-select.component"; -import { InputSwitchModule } from "primeng/inputswitch"; -import { IssuesReportComponent } from "./issues-report.component"; -import { KeywordSearchComponent } from "./components/keyword-search/keyword-search.component"; -import { MatAutocompleteModule } from "@angular/material/autocomplete"; +import { AdminRequestDialogComponent } from './admin-request-dialog/admin-request-dialog.component'; +import { AdvancedSearchDialogComponent } from './advanced-search-dialog/advanced-search-dialog.component'; +import { CommonModule } from '@angular/common'; +import { DetailsGroupComponent } from '../issues/components/details-group/details-group.component'; +import { EpisodeRequestComponent } from './episode-request/episode-request.component'; +import { GenreSelectComponent } from './components/genre-select/genre-select.component'; +import { InputSwitchModule } from 'primeng/inputswitch'; +import { IssuesReportComponent } from './issues-report.component'; +import { KeywordSearchComponent } from './components/keyword-search/keyword-search.component'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { MatButtonModule } from '@angular/material/button'; -import { MatCardModule } from "@angular/material/card"; -import { MatCheckboxModule } from "@angular/material/checkbox"; -import { MatChipsModule } from "@angular/material/chips"; -import { MatDialogModule } from "@angular/material/dialog"; -import { MatExpansionModule } from "@angular/material/expansion"; +import { MatCardModule } from '@angular/material/card'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatChipsModule } from '@angular/material/chips'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatExpansionModule } from '@angular/material/expansion'; import { MatIconModule } from '@angular/material/icon'; -import { MatInputModule } from "@angular/material/input"; +import { MatInputModule } from '@angular/material/input'; import { MatListModule } from '@angular/material/list'; -import {MatMenuModule} from '@angular/material/menu'; +import { MatMenuModule } from '@angular/material/menu'; import { MatNativeDateModule } from '@angular/material/core'; import { MatPaginatorModule } from '@angular/material/paginator'; -import { MatProgressSpinnerModule } from "@angular/material/progress-spinner"; -import { MatProgressBarModule } from "@angular/material/progress-bar"; -import {MatRadioModule} from '@angular/material/radio'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; +import { MatRadioModule } from '@angular/material/radio'; import { MatSelectModule } from '@angular/material/select'; import { MatSidenavModule } from '@angular/material/sidenav'; -import { MatSlideToggleModule } from "@angular/material/slide-toggle"; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatSortModule } from '@angular/material/sort'; import { MatStepperModule } from '@angular/material/stepper'; import { MatTableModule } from '@angular/material/table'; -import { MatTabsModule } from "@angular/material/tabs"; +import { MatTabsModule } from '@angular/material/tabs'; import { MatToolbarModule } from '@angular/material/toolbar'; import { MatTooltipModule } from '@angular/material/tooltip'; import { MatTreeModule } from '@angular/material/tree'; -import { MomentModule } from "ngx-moment"; -import { NgModule } from "@angular/core"; -import { PipeModule } from "../pipes/pipe.module"; -import { RoleModule } from "./role-directive/role.module"; -import { SidebarModule } from "primeng/sidebar"; -import { TranslateModule } from "@ngx-translate/core"; -import { TruncateModule } from "@yellowspot/ng-truncate"; -import { WatchProvidersSelectComponent } from "./components/watch-providers-select/watch-providers-select.component"; +import { NgModule } from '@angular/core'; +import { PipeModule } from '../pipes/pipe.module'; +import { RoleModule } from './role-directive/role.module'; +import { SidebarModule } from 'primeng/sidebar'; +import { TranslateModule } from '@ngx-translate/core'; +import { TruncateModule } from '@yellowspot/ng-truncate'; +import { WatchProvidersSelectComponent } from './components/watch-providers-select/watch-providers-select.component'; +import { DateFnsModule } from 'ngx-date-fns'; @NgModule({ - declarations: [ - IssuesReportComponent, - EpisodeRequestComponent, - DetailsGroupComponent, - AdminRequestDialogComponent, - AdvancedSearchDialogComponent, - KeywordSearchComponent, - GenreSelectComponent, - WatchProvidersSelectComponent, - ], - imports: [ - RoleModule, - SidebarModule, - ReactiveFormsModule, - FormsModule, - CommonModule, - InputSwitchModule, - TruncateModule, - MomentModule, - MatCardModule, - MatProgressSpinnerModule, - MatProgressBarModule, - MatAutocompleteModule, - MatInputModule, - MatTabsModule, - MatRadioModule, - MatButtonModule, - MatNativeDateModule, - MatChipsModule, - MatIconModule, - MatMenuModule, - MatSidenavModule, - MatListModule, - MatToolbarModule, - MatCheckboxModule, - TranslateModule, - MatExpansionModule, - MatDialogModule, - MatTooltipModule, - MatSelectModule, - MatPaginatorModule, - MatSortModule, - MatTreeModule, - MatStepperModule, - MatSnackBarModule, - PipeModule, - ], - exports: [ - RoleModule, - TranslateModule, - CommonModule, - FormsModule, - TranslateModule, - SidebarModule, - MatProgressSpinnerModule, - MatProgressBarModule, - IssuesReportComponent, - EpisodeRequestComponent, - AdminRequestDialogComponent, - AdvancedSearchDialogComponent, - GenreSelectComponent, - KeywordSearchComponent, - WatchProvidersSelectComponent, - DetailsGroupComponent, - TruncateModule, - InputSwitchModule, - MatTreeModule, - MomentModule,MatCardModule, - MatInputModule, - MatTabsModule, - MatChipsModule, - MatButtonModule, - MatNativeDateModule, - MatIconModule, - MatMenuModule, - MatSnackBarModule, - MatSidenavModule, - MatSelectModule, - MatListModule, - MatToolbarModule, - MatTooltipModule, - MatAutocompleteModule, - MatCheckboxModule, - MatExpansionModule, - MatDialogModule, - MatTableModule, - MatPaginatorModule, - MatSortModule, - MatStepperModule, - MatSlideToggleModule, - ], + declarations: [ + IssuesReportComponent, + EpisodeRequestComponent, + DetailsGroupComponent, + AdminRequestDialogComponent, + AdvancedSearchDialogComponent, + KeywordSearchComponent, + GenreSelectComponent, + WatchProvidersSelectComponent, + ], + imports: [ + RoleModule, + SidebarModule, + ReactiveFormsModule, + FormsModule, + CommonModule, + InputSwitchModule, + TruncateModule, + MatCardModule, + MatProgressSpinnerModule, + MatProgressBarModule, + MatAutocompleteModule, + MatInputModule, + MatTabsModule, + MatRadioModule, + MatButtonModule, + MatNativeDateModule, + MatChipsModule, + MatIconModule, + MatMenuModule, + MatSidenavModule, + MatListModule, + MatToolbarModule, + MatCheckboxModule, + TranslateModule, + MatExpansionModule, + MatDialogModule, + MatTooltipModule, + MatSelectModule, + MatPaginatorModule, + MatSortModule, + MatTreeModule, + MatStepperModule, + MatSnackBarModule, + PipeModule, + ], + exports: [ + RoleModule, + TranslateModule, + CommonModule, + FormsModule, + TranslateModule, + SidebarModule, + MatProgressSpinnerModule, + MatProgressBarModule, + IssuesReportComponent, + EpisodeRequestComponent, + AdminRequestDialogComponent, + AdvancedSearchDialogComponent, + GenreSelectComponent, + KeywordSearchComponent, + WatchProvidersSelectComponent, + DetailsGroupComponent, + TruncateModule, + InputSwitchModule, + MatTreeModule, + MatCardModule, + MatInputModule, + MatTabsModule, + MatChipsModule, + MatButtonModule, + MatNativeDateModule, + MatIconModule, + MatMenuModule, + MatSnackBarModule, + MatSidenavModule, + MatSelectModule, + MatListModule, + MatToolbarModule, + MatTooltipModule, + MatAutocompleteModule, + MatCheckboxModule, + MatExpansionModule, + MatDialogModule, + MatTableModule, + MatPaginatorModule, + MatSortModule, + MatStepperModule, + MatSlideToggleModule, + DateFnsModule, + ], }) export class SharedModule {} diff --git a/src/Ombi/ClientApp/src/app/usermanagement/usermanagement.component.html b/src/Ombi/ClientApp/src/app/usermanagement/usermanagement.component.html index 0d5171741..ae3d05537 100644 --- a/src/Ombi/ClientApp/src/app/usermanagement/usermanagement.component.html +++ b/src/Ombi/ClientApp/src/app/usermanagement/usermanagement.component.html @@ -1,191 +1,201 @@ 
-
- - - Add User To Ombi - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - Username {{element.userName}} Alias {{element.alias}} Email {{element.emailAddress}} Requests Remaining -
- {{'UserManagment.MovieRemaining' | translate: {remaining: u.movieRequestQuota.remaining, total: u.movieRequestLimit} }} -
-
- {{'UserManagment.TvRemaining' | translate: {remaining: u.episodeRequestQuota.remaining, total: u.episodeRequestLimit} }} -
-
- {{'UserManagment.MusicRemaining' | translate: {remaining: u.musicRequestQuota.remaining, total: u.musicRequestLimit} }} -
-
Next Request Due -
- {{'UserManagment.MovieDue' | translate: {date: (u.movieRequestQuota.nextRequest | amLocal | amUserLocale | amDateFormat: 'l')} }} -
-
- {{'UserManagment.TvDue' | translate: {date: (u.episodeRequestQuota.nextRequest | amLocal | amUserLocale | amDateFormat: 'l')} }} -
-
- {{'UserManagment.MusicDue' | translate: {date: (u.musicRequestQuota.nextRequest | amLocal | amUserLocale | amDateFormat: 'l')} }} -
-
Last Logged In - - {{u.lastLoggedIn | amFromUtc | amLocal | amUserLocale | amDateFormat: 'l LT'}} - - - Not logged in yet! - User Type - Local User - Plex User - Emby User - Emby Connect User - Jellyfin User - Roles -
- {{claim.value}} -
-
- Edit - -
- - - - - - -
-
-
-
- - {{c.value | humanize}} -
-
-
-
-
-
- - Movie Request Limit - -
-
- Movie Request Limit Type - - - {{RequestLimitType[value]}} - - -
-
-
- - Episode Request Limit - - -
-
- Episode Request Limit Type - - - {{RequestLimitType[value]}} - - -
-
-
-
- - Music Request Limit - - -
-
- Music Request Limit Type - - - {{RequestLimitType[value]}} - - -
-
- - - - - {{value}} - - - - - - -
-
+
+ Add User To Ombi + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + Username{{ element.userName }}Alias{{ element.alias }}Email{{ element.emailAddress }}Requests Remaining +
+ {{ 'UserManagment.MovieRemaining' | translate: { remaining: u.movieRequestQuota.remaining, total: u.movieRequestLimit } }} +
+
+ {{ 'UserManagment.TvRemaining' | translate: { remaining: u.episodeRequestQuota.remaining, total: u.episodeRequestLimit } }} +
+
+ {{ 'UserManagment.MusicRemaining' | translate: { remaining: u.musicRequestQuota.remaining, total: u.musicRequestLimit } }} +
+
Next Request Due +
+ {{ 'UserManagment.MovieDue' | translate: { date: (u.movieRequestQuota.nextRequest | dfnsFormat: 'P') } }} +
+
+ {{ 'UserManagment.TvDue' | translate: { date: (u.episodeRequestQuota.nextRequest | dfnsFormat: 'P') } }} +
+
+ {{ 'UserManagment.MusicDue' | translate: { date: (u.musicRequestQuota.nextRequest | dfnsFormat: 'P') } }} +
+
Last Logged In + + {{ u.lastLoggedIn | dfnsFormat: 'Ppp' }} + + Not logged in yet! + User Type + Local User + Plex User + Emby User + Emby Connect User + Jellyfin User + Roles +
+ {{ claim.value }} +
+
+ Edit + +
+ + + + +
+
+
+
+ + {{ c.value | humanize }} +
+
+
+
+
+
+ + Movie Request Limit + + +
+
+ Movie Request Limit Type + + + {{ RequestLimitType[value] }} + + +
+
+
+
+ + Episode Request Limit + + +
+
+ Episode Request Limit Type + + + {{ RequestLimitType[value] }} + + +
+
+
+
+ + Music Request Limit + + +
+
+ Music Request Limit Type + + + {{ RequestLimitType[value] }} + + +
+
+ + + + + {{ value }} + + + + + +
+
diff --git a/src/Ombi/ClientApp/src/app/usermanagement/usermanagement.module.ts b/src/Ombi/ClientApp/src/app/usermanagement/usermanagement.module.ts index a55702101..e87daab16 100644 --- a/src/Ombi/ClientApp/src/app/usermanagement/usermanagement.module.ts +++ b/src/Ombi/ClientApp/src/app/usermanagement/usermanagement.module.ts @@ -1,53 +1,40 @@ -import { FormsModule, ReactiveFormsModule } from "@angular/forms"; -import { IdentityService, PlexService, RadarrService, SonarrService } from "../services"; -import { RouterModule, Routes } from "@angular/router"; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { IdentityService, PlexService, RadarrService, SonarrService } from '../services'; +import { RouterModule, Routes } from '@angular/router'; -import { AuthGuard } from "../auth/auth.guard"; -import { CommonModule } from "@angular/common"; -import { ConfirmDialogModule } from "primeng/confirmdialog"; -import { MultiSelectModule } from "primeng/multiselect"; -import { NgModule } from "@angular/core"; -import { OrderModule } from "ngx-order-pipe"; -import { PipeModule } from "../pipes/pipe.module"; -import { SharedModule } from "../shared/shared.module"; -import { SidebarModule } from "primeng/sidebar"; -import { TooltipModule } from "primeng/tooltip"; -import { UserManagementComponent } from "./usermanagement.component"; -import { UserManagementUserComponent } from "./usermanagement-user.component"; +import { AuthGuard } from '../auth/auth.guard'; +import { CommonModule } from '@angular/common'; +import { ConfirmDialogModule } from 'primeng/confirmdialog'; +import { MultiSelectModule } from 'primeng/multiselect'; +import { NgModule } from '@angular/core'; +import { PipeModule } from '../pipes/pipe.module'; +import { SharedModule } from '../shared/shared.module'; +import { SidebarModule } from 'primeng/sidebar'; +import { TooltipModule } from 'primeng/tooltip'; +import { UserManagementComponent } from './usermanagement.component'; +import { UserManagementUserComponent } from './usermanagement-user.component'; const routes: Routes = [ - { path: "", component: UserManagementComponent, canActivate: [AuthGuard] }, - { path: "user", component: UserManagementUserComponent, canActivate: [AuthGuard] }, - { path: "user/:id", component: UserManagementUserComponent, canActivate: [AuthGuard] }, + { path: '', component: UserManagementComponent, canActivate: [AuthGuard] }, + { path: 'user', component: UserManagementUserComponent, canActivate: [AuthGuard] }, + { path: 'user/:id', component: UserManagementUserComponent, canActivate: [AuthGuard] }, ]; @NgModule({ - imports: [ - CommonModule, - FormsModule, - ReactiveFormsModule, - RouterModule.forChild(routes), - MultiSelectModule, - PipeModule, - ConfirmDialogModule, - TooltipModule, - OrderModule, - SidebarModule, - SharedModule, - ], - declarations: [ - UserManagementComponent, - UserManagementUserComponent, - ], - exports: [ - RouterModule, - ], - providers: [ - IdentityService, - PlexService, - RadarrService, - SonarrService, - ], - + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + RouterModule.forChild(routes), + MultiSelectModule, + PipeModule, + ConfirmDialogModule, + TooltipModule, + SidebarModule, + SharedModule, + ], + declarations: [UserManagementComponent, UserManagementUserComponent], + exports: [RouterModule], + providers: [IdentityService, PlexService, RadarrService, SonarrService], }) -export class UserManagementModule { } +export class UserManagementModule {} diff --git a/src/Ombi/ClientApp/src/app/vote/vote.module.ts b/src/Ombi/ClientApp/src/app/vote/vote.module.ts index 30727b41a..d3d722f7b 100644 --- a/src/Ombi/ClientApp/src/app/vote/vote.module.ts +++ b/src/Ombi/ClientApp/src/app/vote/vote.module.ts @@ -1,39 +1,23 @@ -import { NgModule } from "@angular/core"; -import { RouterModule, Routes } from "@angular/router"; +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; -import { OrderModule } from "ngx-order-pipe"; -import { OverlayPanelModule } from "primeng/overlaypanel"; -import { TabViewModule } from "primeng/tabview"; +import { OverlayPanelModule } from 'primeng/overlaypanel'; +import { TabViewModule } from 'primeng/tabview'; -import { VoteService } from "../services"; +import { VoteService } from '../services'; -import { AuthGuard } from "../auth/auth.guard"; +import { AuthGuard } from '../auth/auth.guard'; -import { SharedModule as OmbiShared } from "../shared/shared.module"; +import { SharedModule as OmbiShared } from '../shared/shared.module'; -import { VoteComponent } from "./vote.component"; +import { VoteComponent } from './vote.component'; -const routes: Routes = [ - { path: "", component: VoteComponent, canActivate: [AuthGuard] }, -]; +const routes: Routes = [{ path: '', component: VoteComponent, canActivate: [AuthGuard] }]; @NgModule({ - imports: [ - RouterModule.forChild(routes), - OrderModule, - OmbiShared, - TabViewModule, - OverlayPanelModule, - ], - declarations: [ - VoteComponent, - ], - exports: [ - RouterModule, - ], - providers: [ - VoteService, - ], - + imports: [RouterModule.forChild(routes), OmbiShared, TabViewModule, OverlayPanelModule], + declarations: [VoteComponent], + exports: [RouterModule], + providers: [VoteService], }) -export class VoteModule { } +export class VoteModule {} diff --git a/src/Ombi/ClientApp/tsconfig.json b/src/Ombi/ClientApp/tsconfig.json index 87b7c2447..4d5338547 100644 --- a/src/Ombi/ClientApp/tsconfig.json +++ b/src/Ombi/ClientApp/tsconfig.json @@ -14,7 +14,6 @@ "declaration": false, "downlevelIteration": true, "experimentalDecorators": true, - "moduleResolution": "node", "importHelpers": true, "useDefineForClassFields": false, "target": "ES2022", @@ -24,6 +23,9 @@ "dom" ] }, + "types": [ + "node" + ], "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, "strictInjectionParameters": true, diff --git a/src/Ombi/ClientApp/yarn.lock b/src/Ombi/ClientApp/yarn.lock index 48c6c207f..354e26529 100644 --- a/src/Ombi/ClientApp/yarn.lock +++ b/src/Ombi/ClientApp/yarn.lock @@ -1844,6 +1844,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.21.0": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" + integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" @@ -2551,11 +2558,6 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@scarf/scarf@^1.1.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@scarf/scarf/-/scarf-1.3.0.tgz#f8c75560d0dace4452dee1e31995e6396e61f3ee" - integrity sha512-lHKK8M5CTcpFj2hZDB3wIjb0KAbEOgDmiJGDv1WBRfQgRm/a8/XMEkG/N1iM01xgbUDsPQwi42D+dFo1XPAKew== - "@schematics/angular@16.2.12": version "16.2.12" resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-16.2.12.tgz#13e00e7390903cfc00eb8d5c2e74986262aff6ec" @@ -3397,6 +3399,13 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.62.tgz#5b80d7a800f86842c5fadc066a63d6312208805c" integrity sha512-/zbPnIBkef8sT+6vw6BxdvU3dCxRI0v6rBu/6IvXnRNtOPILucigqhUBPYxtQ/8JdAna0JLTAcNTCDmQ77QYkQ== +"@types/node@^20.11.17": + version "20.11.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.17.tgz#cdd642d0e62ef3a861f88ddbc2b61e32578a9292" + integrity sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw== + dependencies: + undici-types "~5.26.4" + "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" @@ -3434,13 +3443,6 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" integrity sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug== -"@types/qrcode@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.5.0.tgz#6a98fe9a9a7b2a9a3167b6dde17eff999eabe40b" - integrity sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA== - dependencies: - "@types/node" "*" - "@types/qs@*", "@types/qs@^6.9.5": version "6.9.10" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.10.tgz#0af26845b5067e1c9a622658a51f60a3934d51e8" @@ -4077,13 +4079,12 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== -angularx-qrcode@^15.0.0: - version "15.0.1" - resolved "https://registry.yarnpkg.com/angularx-qrcode/-/angularx-qrcode-15.0.1.tgz#349b558715c99d933cb62b264ff1bd7b269b334d" - integrity sha512-CirpL2rhhYX/QZ1OSaJ/fusABjDlwl1oYBqaLRqmyie0xTbscWqTBW0DEoht2yCNGN8Wt+JmZwTLxYG6tLuWeQ== +angularx-qrcode@^16.0.0: + version "16.0.2" + resolved "https://registry.yarnpkg.com/angularx-qrcode/-/angularx-qrcode-16.0.2.tgz#86af924191546394cb93f9fb8d0c42edd0132894" + integrity sha512-FztOM7vjNu88sGxUU5jG2I+A9TxZBXXYBWINjpwIBbTL+COMgrtzXnScG7TyQeNknv5w3WFJWn59PcngRRYVXA== dependencies: - "@types/qrcode" "1.5.0" - qrcode "1.5.1" + qrcode "1.5.3" tslib "^2.3.0" ansi-align@^3.0.0: @@ -5969,6 +5970,13 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +date-fns@2.30.0: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" + debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -9299,6 +9307,11 @@ locate-path@^7.1.0: dependencies: p-locate "^6.0.0" +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -9893,11 +9906,6 @@ mkdirp@^2.1.6: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== -moment@^2.29.1: - version "2.29.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" - integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== - morgan@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" @@ -10020,43 +10028,35 @@ ng2-cookies@^1.0.12: resolved "https://registry.yarnpkg.com/ng2-cookies/-/ng2-cookies-1.0.12.tgz#3f3e613e0137b0649b705c678074b4bd08149ccc" integrity sha512-oWRcKAAX81VrVb6ZVzLCf7mmaFM18eebsPOSxQG+bC3AtEm3LNT9zULfOE2Xwsddf5UM2STGcAocEKWNw84vSg== -ngx-clipboard@^12.1.0: - version "12.3.1" - resolved "https://registry.yarnpkg.com/ngx-clipboard/-/ngx-clipboard-12.3.1.tgz#565d73b946b10719242e532e748ad912cf8bc97a" - integrity sha512-qrUmkfYXEBQZQ4wNKno8yw5eOSxtdkzCPFFPil/XVVc93MNIKUme8aLbS3TEMB4PGsxopjbuTAzV7fptiSOIww== +ngx-clipboard@^16.0.0: + version "16.0.0" + resolved "https://registry.yarnpkg.com/ngx-clipboard/-/ngx-clipboard-16.0.0.tgz#bb97584d33e8009420b8d7f83b185f68ca06869f" + integrity sha512-rZ/Eo1PqiKMiyF8tdjhmUkoUu68f7OzBJ7YH1YFeh2RAaNrerTaW8XfFOzppSckjFQqA1fwGSYuTTJlDhDag5w== dependencies: - ngx-window-token "^2.0.0" - tslib "^1.9.0" + ngx-window-token ">=7.0.0" + tslib "^2.0.0" -ngx-infinite-scroll@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/ngx-infinite-scroll/-/ngx-infinite-scroll-9.1.0.tgz#6716a47613ff59f236b85c3ce291b2fd57106824" - integrity sha512-ZulbahgFsoPmP8cz7qPGDeFX9nKiSm74aav8vXNSI1ZoPiGYY5FQd8AK+yXqygY7tyCJRyt8Wp3DIg7zgP5dPA== +ngx-date-fns@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/ngx-date-fns/-/ngx-date-fns-11.0.0.tgz#5413e78868596097d7652e1f9bb871eb07debe92" + integrity sha512-lpWjWL4yQDvhvqynrUtvft81NkVbBDfSl97UoaHWKFwfScnmplR3XsEnguNZQte4S/RIOxV4TZ+eM6gFlAN2SQ== dependencies: - "@scarf/scarf" "^1.1.0" - opencollective-postinstall "^2.0.2" + tslib "^2.3.0" -ngx-moment@^3.0.1: - version "3.5.0" - resolved "https://registry.yarnpkg.com/ngx-moment/-/ngx-moment-3.5.0.tgz#97a4575a05d038612229b9fe09c4910353020613" - integrity sha512-QC/5XNC0BW6WkJkwZT4r2A29j/8sJAmhuQJrEnEdpW35GvkemccuxEUAwo/PwkzPB/CHaquR00E6P2HVEQ1iEg== +ngx-infinite-scroll@^17.0.0: + version "17.0.0" + resolved "https://registry.yarnpkg.com/ngx-infinite-scroll/-/ngx-infinite-scroll-17.0.0.tgz#15726104d5b4e248a6eb96b03149959b20233ae8" + integrity sha512-pQXLuRiuhRuDKD3nmgyW1V08JVNBepmk6nb8qjHc5hgsWNts01+R/p33rYcRDzcut6/PWqGyrZ9o9i8swzMYMA== dependencies: - tslib "^1.9.0" + tslib "^2.3.0" -ngx-order-pipe@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ngx-order-pipe/-/ngx-order-pipe-2.2.0.tgz#14ab50dfe0a679e5216138ff9a0820a83173a4fe" - integrity sha512-fym4A3j0XMqETskCm0tHUHQWCgB1p1MrIstFA3jCClJqNU9KjtQh/AE4C7srUkz9U3HIBIAN9D3ty2L9l/jvmA== +ngx-window-token@>=7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/ngx-window-token/-/ngx-window-token-7.0.0.tgz#2e1bc76846411a388188b802154e4841d3e27856" + integrity sha512-5+XfRVSY7Dciu8xyCNMkOlH2UfwR9W2P1Pirz7caaZgOZDjFbL8aEO2stjfJJm2FFf1D6dlVHNzhLWGk9HGkqA== dependencies: tslib "^2.0.0" -ngx-window-token@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ngx-window-token/-/ngx-window-token-2.0.1.tgz#8f91221af4116aa9f49bb3f7a6f1111639884fba" - integrity sha512-rvqdqJEfnWXQFU5fyfYt06E10tR/UtFOYdF3QebfcOh5VIJhnTKiprX8e4B9OrX7WEVFm9BT8uV72xXcEgsaKA== - dependencies: - tslib "^1.9.0" - nice-napi@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/nice-napi/-/nice-napi-1.0.2.tgz#dc0ab5a1eac20ce548802fc5686eaa6bc654927b" @@ -10493,7 +10493,7 @@ open@^7.0.3: is-docker "^2.0.0" is-wsl "^2.1.1" -opencollective-postinstall@^2.0.2, opencollective-postinstall@^2.0.3: +opencollective-postinstall@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== @@ -11433,10 +11433,10 @@ q@^1.4.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qrcode@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.1.tgz#0103f97317409f7bc91772ef30793a54cd59f0cb" - integrity sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg== +qrcode@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" + integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== dependencies: dijkstrajs "^1.0.1" encode-utf8 "^1.0.3" @@ -13522,16 +13522,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@^5.0.4: +typescript@5.2.2, typescript@^5.0.4: version "5.2.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== -typescript@~5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" - integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== - uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c"