mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-14 02:26:55 -07:00
!wip on Recently Added
This commit is contained in:
parent
21c0a449ca
commit
1101abf92c
12 changed files with 144 additions and 9 deletions
|
@ -34,6 +34,13 @@
|
|||
<i class="fa fa-th-list"></i> {{ 'NavigationBar.Requests' | translate }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="nav navbar-nav">
|
||||
<li id="Requests" [routerLinkActive]="['active']">
|
||||
<a [routerLink]="['/recentlyadded']">
|
||||
<i class="fa fa-th-list"></i> {{ 'NavigationBar.RecentlyAdded' | translate }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul *ngIf="issuesEnabled" class="nav navbar-nav">
|
||||
<li id="Issues" [routerLinkActive]="['active']">
|
||||
<a [routerLink]="['/issues']">
|
||||
|
@ -46,6 +53,7 @@
|
|||
<i class="fa fa-user"></i> {{ 'NavigationBar.UserManagement' | translate }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul *ngIf="hasRole('Admin') || hasRole('PowerUser')" class="nav navbar-nav">
|
||||
<li>
|
||||
<a href="https://www.paypal.me/PlexRequestsNet" target="_blank" pTooltip="{{ 'NavigationBar.DonateTooltip' | translate }}">
|
||||
|
|
|
@ -52,6 +52,7 @@ const routes: Routes = [
|
|||
{ loadChildren: "./usermanagement/usermanagement.module#UserManagementModule", path: "usermanagement" },
|
||||
{ loadChildren: "./requests/requests.module#RequestsModule", path: "requests" },
|
||||
{ loadChildren: "./search/search.module#SearchModule", path: "search" },
|
||||
{ loadChildren: "./recentlyAdded/recentlyAdded.module#RecentlyAddedModule", path: "recentlyadded" },
|
||||
];
|
||||
|
||||
// AoT requires an exported function for factories
|
||||
|
|
20
src/Ombi/ClientApp/app/interfaces/IRecentlyAdded.ts
Normal file
20
src/Ombi/ClientApp/app/interfaces/IRecentlyAdded.ts
Normal file
|
@ -0,0 +1,20 @@
|
|||
export interface IRecentlyAddedMovies {
|
||||
id: number;
|
||||
title: string;
|
||||
overview: string;
|
||||
imdbId: string;
|
||||
theMovieDbId: string;
|
||||
releaseYear: string;
|
||||
addedAt: Date;
|
||||
quality: string;
|
||||
}
|
||||
|
||||
export interface IRecentlyAddedRangeModel {
|
||||
from: Date;
|
||||
to: Date;
|
||||
}
|
||||
|
||||
export enum RecentlyAddedType {
|
||||
Plex,
|
||||
Emby,
|
||||
}
|
|
@ -13,3 +13,4 @@ export * from "./ISettings";
|
|||
export * from "./ISonarr";
|
||||
export * from "./IUser";
|
||||
export * from "./IIssues";
|
||||
export * from "./IRecentlyAdded";
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
<h1>Recently Added</h1>
|
||||
|
||||
<hr />
|
||||
<p-calendar [(ngModel)]="range" showButtonBar="true" selectionMode="range" (onClose)="close()"></p-calendar>
|
||||
<hr />
|
||||
{{movies | json}}
|
|
@ -0,0 +1,36 @@
|
|||
import { Component, OnInit } from "@angular/core";
|
||||
|
||||
import { RecentlyAddedService } from "../services/index";
|
||||
import { IRecentlyAddedMovies, IRecentlyAddedRangeModel } from "./../interfaces";
|
||||
|
||||
@Component({
|
||||
templateUrl: "recentlyAdded.component.html",
|
||||
})
|
||||
|
||||
export class RecentlyAddedComponent implements OnInit {
|
||||
public movies: IRecentlyAddedMovies[];
|
||||
public range: Date[];
|
||||
|
||||
constructor(private recentlyAddedService: RecentlyAddedService) {}
|
||||
|
||||
public ngOnInit() {
|
||||
const weekAgo = new Date();
|
||||
weekAgo.setDate(weekAgo.getDate() - 7);
|
||||
|
||||
const today =new Date();
|
||||
const initModel = <IRecentlyAddedRangeModel>{from: weekAgo, to: today};
|
||||
this.recentlyAddedService.getRecentlyAddedMovies(initModel).subscribe(x => this.movies = x);
|
||||
}
|
||||
|
||||
public close() {
|
||||
if(this.range.length < 2) {
|
||||
return;
|
||||
}
|
||||
if(!this.range[1]) {
|
||||
// If we do not have a second date then just set it to now
|
||||
this.range[1] = new Date();
|
||||
}
|
||||
const initModel = <IRecentlyAddedRangeModel>{from: this.range[0], to: this.range[1]};
|
||||
this.recentlyAddedService.getRecentlyAddedMovies(initModel).subscribe(x => this.movies = x);
|
||||
}
|
||||
}
|
43
src/Ombi/ClientApp/app/recentlyAdded/recentlyAdded.module.ts
Normal file
43
src/Ombi/ClientApp/app/recentlyAdded/recentlyAdded.module.ts
Normal file
|
@ -0,0 +1,43 @@
|
|||
import { NgModule } from "@angular/core";
|
||||
import { RouterModule, Routes } from "@angular/router";
|
||||
|
||||
import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
|
||||
import { OrderModule } from "ngx-order-pipe";
|
||||
import { CalendarModule, PaginatorModule, SharedModule, TabViewModule } from "primeng/primeng";
|
||||
|
||||
import { IdentityService, RecentlyAddedService } from "../services";
|
||||
|
||||
import { AuthGuard } from "../auth/auth.guard";
|
||||
|
||||
import { SharedModule as OmbiShared } from "../shared/shared.module";
|
||||
|
||||
import { RecentlyAddedComponent } from "./recentlyAdded.component";
|
||||
|
||||
const routes: Routes = [
|
||||
{ path: "", component: RecentlyAddedComponent, canActivate: [AuthGuard] },
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild(routes),
|
||||
NgbModule.forRoot(),
|
||||
SharedModule,
|
||||
OrderModule,
|
||||
OmbiShared,
|
||||
PaginatorModule,
|
||||
TabViewModule,
|
||||
CalendarModule,
|
||||
],
|
||||
declarations: [
|
||||
RecentlyAddedComponent,
|
||||
],
|
||||
exports: [
|
||||
RouterModule,
|
||||
],
|
||||
providers: [
|
||||
IdentityService,
|
||||
RecentlyAddedService,
|
||||
],
|
||||
|
||||
})
|
||||
export class RecentlyAddedModule { }
|
|
@ -12,3 +12,4 @@ export * from "./status.service";
|
|||
export * from "./job.service";
|
||||
export * from "./issues.service";
|
||||
export * from "./mobile.service";
|
||||
export * from "./recentlyAdded.service";
|
||||
|
|
18
src/Ombi/ClientApp/app/services/recentlyAdded.service.ts
Normal file
18
src/Ombi/ClientApp/app/services/recentlyAdded.service.ts
Normal file
|
@ -0,0 +1,18 @@
|
|||
import { PlatformLocation } from "@angular/common";
|
||||
import { Injectable } from "@angular/core";
|
||||
|
||||
import { HttpClient } from "@angular/common/http";
|
||||
import { Observable } from "rxjs/Rx";
|
||||
|
||||
import { IRecentlyAddedMovies, IRecentlyAddedRangeModel } from "./../interfaces";
|
||||
import { ServiceHelpers } from "./service.helpers";
|
||||
|
||||
@Injectable()
|
||||
export class RecentlyAddedService extends ServiceHelpers {
|
||||
constructor(http: HttpClient, public platformLocation: PlatformLocation) {
|
||||
super(http, "/api/v1/recentlyadded/", platformLocation);
|
||||
}
|
||||
public getRecentlyAddedMovies(model: IRecentlyAddedRangeModel): Observable<IRecentlyAddedMovies[]> {
|
||||
return this.http.post<IRecentlyAddedMovies[]>(`${this.url}movies/`,JSON.stringify(model), {headers: this.headers});
|
||||
}
|
||||
}
|
12
src/Ombi/package-lock.json
generated
12
src/Ombi/package-lock.json
generated
|
@ -103,9 +103,9 @@
|
|||
}
|
||||
},
|
||||
"@auth0/angular-jwt": {
|
||||
"version": "1.0.0-beta.10",
|
||||
"resolved": "https://registry.npmjs.org/@auth0/angular-jwt/-/angular-jwt-1.0.0-beta.10.tgz",
|
||||
"integrity": "sha512-8ilDlQvXePuOAjIlPOeJg0SRSbalNvsRtwbInjS2ND8krma4rqLv8KR5ORsxe01yc8z5vZa69m838pyhFEdPfA=="
|
||||
"version": "1.0.0-beta.9",
|
||||
"resolved": "https://registry.npmjs.org/@auth0/angular-jwt/-/angular-jwt-1.0.0-beta.9.tgz",
|
||||
"integrity": "sha1-ZQIsNJ7ck97DMS+TO5VccZ6GKmI="
|
||||
},
|
||||
"@ng-bootstrap/ng-bootstrap": {
|
||||
"version": "1.0.0",
|
||||
|
@ -9745,9 +9745,9 @@
|
|||
"integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE="
|
||||
},
|
||||
"primeng": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/primeng/-/primeng-5.2.0.tgz",
|
||||
"integrity": "sha512-70+QSR5bCtYV+jmqmsYIdE1pkBse/pCSgU7m71d0VNEagmyY1JNKIp9mKdL7MSbUE/fGdbqfkhkmUeP+x4N2jw=="
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/primeng/-/primeng-5.0.2.tgz",
|
||||
"integrity": "sha1-BcSkUC79TDvF1QaqAa6Osw+XZNs="
|
||||
},
|
||||
"private": {
|
||||
"version": "0.1.8",
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
"@angular/platform-browser-dynamic": "^5.2.5",
|
||||
"@angular/platform-server": "^5.2.5",
|
||||
"@angular/router": "^5.2.5",
|
||||
"@auth0/angular-jwt": "^1.0.0-beta.10",
|
||||
"@auth0/angular-jwt": "1.0.0-beta.9",
|
||||
"@ng-bootstrap/ng-bootstrap": "^1.0.0",
|
||||
"@ngx-translate/core": "^8.0.0",
|
||||
"@ngx-translate/http-loader": "^2.0.1",
|
||||
|
@ -59,7 +59,7 @@
|
|||
"node-sass": "^4.7.2",
|
||||
"npm": "^5.6.0",
|
||||
"pace-progress": "^1.0.2",
|
||||
"primeng": "~5.2.0",
|
||||
"primeng": "5.0.2",
|
||||
"reflect-metadata": "0.1.10",
|
||||
"run-sequence": "^2.2.1",
|
||||
"rxjs": "5.5.2",
|
||||
|
|
|
@ -67,7 +67,8 @@
|
|||
"Dutch": "Dutch",
|
||||
"Norwegian":"Norwegian"
|
||||
},
|
||||
"OpenMobileApp":"Open Mobile App"
|
||||
"OpenMobileApp":"Open Mobile App",
|
||||
"RecentlyAdded":"Recently Added"
|
||||
},
|
||||
"Search": {
|
||||
"Title": "Search",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue