diff --git a/src/Ombi/ClientApp/src/app/settings/plex/plex.component.scss b/src/Ombi/ClientApp/src/app/settings/plex/plex.component.scss
index 7acdcf6f0..b6e3bd73e 100644
--- a/src/Ombi/ClientApp/src/app/settings/plex/plex.component.scss
+++ b/src/Ombi/ClientApp/src/app/settings/plex/plex.component.scss
@@ -21,4 +21,26 @@
::ng-deep div .mat-tab-body-content {
overflow: hidden;
-}
\ No newline at end of file
+}
+.server-card {
+ margin: 0em 1em 1em 0;
+ width: 13em;
+ min-height: 8em;
+
+ button {
+ text-align: center;
+ align-content: center;
+ white-space: normal;
+ overflow-wrap: anywhere;
+ height: 100%;
+ width: 100%;
+ }
+
+ i {
+ margin-top: 0.25em;
+ }
+
+ h3 {
+ margin: 0;
+ }
+ }
\ No newline at end of file
diff --git a/src/Ombi/ClientApp/src/app/settings/plex/plex.component.ts b/src/Ombi/ClientApp/src/app/settings/plex/plex.component.ts
index d026fd1dd..712b77dc1 100644
--- a/src/Ombi/ClientApp/src/app/settings/plex/plex.component.ts
+++ b/src/Ombi/ClientApp/src/app/settings/plex/plex.component.ts
@@ -8,7 +8,8 @@ import { MatTabChangeEvent, MatTabGroup } from "@angular/material/tabs";
import {UntypedFormControl} from '@angular/forms';
import { MatDialog } from "@angular/material/dialog";
import { PlexWatchlistComponent } from "./components/watchlist/plex-watchlist.component";
-import { PlexCreds, PlexSyncType } from "./components/models";
+import { PlexServerDialogComponent } from "./components/plex-server-dialog/plex-server-dialog.component";
+import { PlexCreds, PlexServerDialogData, PlexSyncType } from "./components/models";
@Component({
templateUrl: "./plex.component.html",
@@ -21,9 +22,14 @@ export class PlexComponent implements OnInit, OnDestroy {
selected = new UntypedFormControl(0);
@ViewChild("tabGroup", {static: false}) public tagGroup: MatTabGroup;
+
+ public username: string;
+ public password: string;
+
public advanced = false;
private subscriptions = new Subject();
+ public PlexSyncType = PlexSyncType;
constructor(
private settingsService: SettingsService,
@@ -39,8 +45,8 @@ export class PlexComponent implements OnInit, OnDestroy {
});
}
- public requestServers({ username, password }: PlexCreds) {
- this.plexService.getServers(username, password).pipe(
+ public requestServers() {
+ this.plexService.getServers(this.username, this.password).pipe(
takeUntil(this.subscriptions),
).subscribe(x => {
if (x.success) {
@@ -53,7 +59,9 @@ export class PlexComponent implements OnInit, OnDestroy {
});
}
- public selectServer(selectedServer: IPlexServerResponse, server: IPlexServer) {
+ public selectServer(selectedServer: IPlexServerResponse) {
+ const server = { name: "New" + this.settings.servers.length + "*", id: Math.floor(Math.random() * (99999 - 0 + 1) + 1) };
+
var splitServers = selectedServer.localAddresses.split(",");
if (splitServers.length > 1) {
server.ip = splitServers[splitServers.length - 1];
@@ -68,6 +76,7 @@ export class PlexComponent implements OnInit, OnDestroy {
server.serverHostname = "";
this.notificationService.success(`Selected ${server.name}!`);
+ this.newServer(server);
}
public testPlex(server: IPlexServer) {
@@ -167,6 +176,34 @@ export class PlexComponent implements OnInit, OnDestroy {
}
}
+ public edit(server: IPlexServer) {
+ const data: PlexServerDialogData = {
+ server: server,
+ };
+ const dialog = this.dialog.open(PlexServerDialogComponent, {
+ width: "700px",
+ data: data,
+ panelClass: "modal-panel",
+ });
+ dialog.afterClosed().subscribe((x) => {
+ console.log(x);
+ });
+ }
+
+ public newServer(server: IPlexServer) {
+ if(!server) {
+ server = { name: "New" + this.settings.servers.length + "*", id: Math.floor(Math.random() * (99999 - 0 + 1) + 1) };
+ }
+ const dialog = this.dialog.open(PlexServerDialogComponent, {
+ width: "700px",
+ data: {server: server},
+ panelClass: "modal-panel",
+ });
+ dialog.afterClosed().subscribe((x) => {
+ console.log(x);
+ });
+ }
+
private runCacher(): void {
this.jobService.runPlexCacher().subscribe(x => {
if (x) {
diff --git a/src/Ombi/ClientApp/src/app/settings/settings.module.ts b/src/Ombi/ClientApp/src/app/settings/settings.module.ts
index a1b530f11..990e89837 100644
--- a/src/Ombi/ClientApp/src/app/settings/settings.module.ts
+++ b/src/Ombi/ClientApp/src/app/settings/settings.module.ts
@@ -50,7 +50,7 @@ import { LandingPageComponent } from "./landingpage/landingpage.component";
import { LidarrComponent } from "./lidarr/lidarr.component";
import { LogsComponent } from "./logs/logs.component";
import { MassEmailComponent } from "./massemail/massemail.component";
-import { MatDialogModule } from "@angular/material/dialog";
+import { MatDialogActions, MatDialogModule } from "@angular/material/dialog";
import { MatMenuModule } from "@angular/material/menu";
import { MattermostComponent } from "./notifications/mattermost.component";
import {MenuModule} from "primeng/menu";
@@ -86,6 +86,7 @@ import { WikiComponent } from "./wiki.component";
import { PlexWatchlistComponent } from "./plex/components/watchlist/plex-watchlist.component";
import { PlexFormComponent } from "./plex/components/plex-form/plex-form.component";
import { PlexFormFieldComponent } from "./plex/components/form-field/plex-form-field.component";
+import { PlexServerDialogComponent } from "./plex/components/plex-server-dialog/plex-server-dialog.component";
const routes: Routes = [
{ path: "Ombi", component: OmbiComponent, canActivate: [AuthGuard] },
@@ -146,7 +147,7 @@ const routes: Routes = [
DialogModule,
SharedModule,
MatMenuModule,
- MatDialogModule
+ MatDialogModule,
],
declarations: [
SettingsMenuComponent,
@@ -195,6 +196,7 @@ const routes: Routes = [
PlexWatchlistComponent,
PlexFormComponent,
PlexFormFieldComponent,
+ PlexServerDialogComponent,
],
exports: [
RouterModule,