mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-20 21:33:15 -07:00
Fixed up some of the settings pages from the PR comments
This commit is contained in:
parent
684403869b
commit
28288e8a51
10 changed files with 211 additions and 695 deletions
|
@ -6,60 +6,46 @@
|
|||
<legend>CouchPotato Settings</legend>
|
||||
<form novalidate [formGroup]="form" (ngSubmit)="onSubmit(form)">
|
||||
<div class="row">
|
||||
<div class="col-md-12 col-12 col-sm-12" style="float: right; width:100%; text-align:right;">
|
||||
<div class="col-md-12 col-12 col-sm-12 top-spacing">
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle formControlName="enabled" id="enable">Enable</mat-slide-toggle>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-7 col-8 col-sm-12">
|
||||
<div class="col-md-5 col-7 col-sm-12">
|
||||
<label for="username" class="control-label"><h3>Server Configuration</h3></label>
|
||||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" floatLabel=always>
|
||||
<mat-form-field appearance="outline" >
|
||||
<mat-label>Hostname or IP</mat-label>
|
||||
<input matInput id="Ip" name="Ip" placeholder="Example: localhost" formControlName="ip" >
|
||||
<input matInput id="Ip" name="Ip" formControlName="ip" >
|
||||
<mat-error>The IP/Hostname is required</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-form-field appearance="outline" floatLabel=always>
|
||||
<mat-label>Port</mat-label>
|
||||
<input matInput id="port" name="port" placeholder="Example: 8989" formControlName="port">
|
||||
<mat-error>The Port is required</mat-error>
|
||||
</mat-form-field>
|
||||
<mat-slide-toggle formControlName="ssl">SSL</mat-slide-toggle>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" floatLabel=always>
|
||||
<mat-form-field appearance="outline" >
|
||||
<mat-label>API Key</mat-label>
|
||||
<input matInput id="apiKey" name="apiKey" placeholder="API Key" formControlName="apiKey">
|
||||
<input matInput id="apiKey" name="apiKey" formControlName="apiKey">
|
||||
<mat-error>The API Key is required</mat-error>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" >
|
||||
<mat-label>Port</mat-label>
|
||||
<input matInput id="port" name="port" formControlName="port">
|
||||
<mat-error>The Port is required</mat-error>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle formControlName="ssl">SSL</mat-slide-toggle>
|
||||
</div>
|
||||
|
||||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" floatLabel=always>
|
||||
<mat-form-field appearance="outline" >
|
||||
<mat-label>Base URL</mat-label>
|
||||
<input matInput id="SubDir" name="SubDir" placeholder="Example: /sonarr" formControlName="subDir">
|
||||
<input matInput id="SubDir" name="SubDir" formControlName="subDir">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<label for="username" class="control-label"><h3>Plex Credentials</h3></label>
|
||||
<div>
|
||||
<mat-form-field appearance="outline" floatLabel=auto>
|
||||
<mat-label>Username</mat-label>
|
||||
<input matInput id="username" placeholder="username" formControlName="username" value="{{username}}">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div>
|
||||
<mat-form-field appearance="outline" floatLabel=auto>
|
||||
<mat-label>Password</mat-label>
|
||||
<input matInput type="password" id="password" placeholder="Password" formControlName="password" value="{{password}}">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div>
|
||||
<button mat-raised-button class="mat-focus-indicator mat-stroked-button mat-button-base" (click)="requestToken(form)">Request Api Key <i class="fa fa-key"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-5 col-4 col-sm-12">
|
||||
<label for="username" class="control-label"><h3>Interface</h3></label>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<legend>DogNzb Settings</legend>
|
||||
<form novalidate [formGroup]="form" (ngSubmit)="onSubmit(form)" style="padding-top:2%;">
|
||||
<div class="row">
|
||||
<div class="col-md-12 col-12 col-sm-12" style="float: right; width:100%; text-align:right;">
|
||||
<div class="col-md-12 col-12 col-sm-12">
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle formControlName="enabled">Enabled</mat-slide-toggle>
|
||||
</div>
|
||||
|
|
|
@ -1,110 +0,0 @@
|
|||
|
||||
<settings-menu></settings-menu>
|
||||
<div class="small-middle-container">
|
||||
<div *ngIf="settings">
|
||||
<fieldset>
|
||||
<legend>
|
||||
Emby/Jellyfin Configuration
|
||||
</legend>
|
||||
|
||||
<div class="row">
|
||||
<div class="form-group col-md-3">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="enable" [(ngModel)]="settings.enable" [checked]="settings.enable">
|
||||
<label for="enable">Enable</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2 col-md-push-7">
|
||||
<button type="button" (click)="addTab()" class="btn btn-success-outline">Add Server</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ngb-tabset>
|
||||
<div *ngFor="let server of settings.servers">
|
||||
<ngb-tab [id]="server.id" [title]="server.name">
|
||||
<ng-template ngbTabContent>
|
||||
<br />
|
||||
<br />
|
||||
<div class="col-md-2" style="float: right;">
|
||||
<button type="button" (click)="removeServer(server)" class="btn btn-danger-outline">Remove Server</button>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="name" class="control-label">Server name</label>
|
||||
<div>
|
||||
<input type="text" class="form-control form-control-custom " id="name" name="name" placeholder="Server" [(ngModel)]="server.name" value="{{server.name}}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="Ip" class="control-label">Hostname or IP</label>
|
||||
<div>
|
||||
<input type="text" class="form-control form-control-custom " id="Ip" name="Ip" placeholder="localhost" [(ngModel)]="server.ip" value="{{server.ip}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="portNumber" class="control-label">Port</label>
|
||||
<div>
|
||||
<input type="text" [(ngModel)]="server.port" class="form-control form-control-custom " id="portNumber" name="Port" placeholder="Port Number" value="{{server.port}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="ssl" [(ngModel)]="server.ssl" ng-checked="server.ssl">
|
||||
<label for="ssl">SSL</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="authToken" class="control-label">Emby Api Key</label>
|
||||
<div class="">
|
||||
<input type="text" class="form-control-custom form-control" id="authToken" [(ngModel)]="server.apiKey" placeholder="Emby Api Key" value="{{server.apiKey}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="authToken" class="control-label">Externally Facing Hostname
|
||||
<i class="fa fa-question-circle"
|
||||
pTooltip="This will be the external address that users will navigate to when they press the 'View On Emby' button"></i>
|
||||
</label>
|
||||
<div>
|
||||
<input type="text" class="form-control-custom form-control" id="authToken" [(ngModel)]="server.serverHostname" placeholder="e.g. https://jellyfin.server.com/" value="{{server.serverHostname}}">
|
||||
<small><span *ngIf="server.serverHostname">Current URL: "{{server.serverHostname}}/#!/{{settings.isJellyfin ? ("itemdetails"): ("item/item")}}.html?id=1"</span>
|
||||
<span *ngIf="!server.serverHostname">Current URL: "https://app.emby.media/#!/{{settings.isJellyfin ? ("itemdetails"): ("item/item")}}.html?id=1</span></small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button id="testEmby" type="button" (click)="test(server)" class="btn btn-primary-outline">Test Connectivity <div id="spinner"></div></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button id="discover" type="button" (click)="discoverServerInfo(server)" class="btn btn-primary-outline">Discover Server Information <div id="spinner"></div></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ng-template>
|
||||
</ngb-tab>
|
||||
</div>
|
||||
</ngb-tabset>
|
||||
<div class="col-md-1">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button [disabled]="!hasDiscovered" (click)="save()" type="submit" id="save" class="btn btn-primary-outline">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button (click)="runCacher()" type="button" id="save" class="btn btn-primary-outline">Manually Run Cacher</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
|
@ -8,7 +8,7 @@
|
|||
</legend>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-6 col-sm-6" style="float: right; width:100%; text-align:right;">
|
||||
<div class="col-md-6 col-6 col-sm-6">
|
||||
<div style="float:right;text-align:left;">
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle [(ngModel)]="settings.enable" [checked]="settings.enable">Enable</mat-slide-toggle>
|
||||
|
|
|
@ -1,198 +0,0 @@
|
|||
<settings-menu></settings-menu>
|
||||
<div class="small-middle-container">
|
||||
<div class="row">
|
||||
<div class="col-md-2 col-md-push-10" style="float:right;">
|
||||
<span style="vertical-align: top;">Advanced</span>
|
||||
<p-inputSwitch id="customInputSwitch" [(ngModel)]="advanced"></p-inputSwitch>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="settings">
|
||||
<fieldset>
|
||||
<legend>Plex Configuration</legend>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="form-group col-md-3">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="enable" [(ngModel)]="settings.enable" [checked]="settings.enable">
|
||||
<label for="enable">Enable</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2 col-md-push-7" style="float:right;">
|
||||
<button type="button" (click)="addTab()" class="btn btn-success-outline">Add Server</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ngb-tabset>
|
||||
|
||||
<div *ngFor="let server of settings.servers">
|
||||
<ngb-tab [id]="server.id" [title]="server.name">
|
||||
<ng-template ngbTabContent>
|
||||
<br />
|
||||
<br />
|
||||
<div class="col-md-2 " style="float: right;">
|
||||
<button type="button" (click)="removeServer(server)" class="btn btn-danger-outline">Remove Server</button>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<div class="col-md-6">
|
||||
<!-- Main Content -->
|
||||
<div class="form-group">
|
||||
<label for="name" class="control-label">Server name</label>
|
||||
<div>
|
||||
<input type="text" class="form-control form-control-custom " id="name" name="name" placeholder="Server" [(ngModel)]="server.name"
|
||||
value="{{server.name}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="Ip" class="control-label">Hostname or IP</label>
|
||||
<div>
|
||||
<input type="text" class="form-control form-control-custom " id="Ip" name="Ip" placeholder="localhost" [(ngModel)]="server.ip"
|
||||
value="{{server.ip}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="portNumber" class="control-label">Port</label>
|
||||
<div>
|
||||
<input type="text" [(ngModel)]="server.port" class="form-control form-control-custom " id="portNumber" name="Port" placeholder="Port Number"
|
||||
value="{{server.port}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="ssl" [(ngModel)]="server.ssl" [checked]="server.ssl">
|
||||
<label for="ssl">SSL</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label for="authToken" class="control-label">Plex Authorization Token</label>
|
||||
<div class="">
|
||||
<input type="text" class="form-control-custom form-control" id="authToken" [(ngModel)]="server.plexAuthToken" placeholder="Plex Auth Token"
|
||||
value="{{server.plexAuthToken}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="MachineIdentifier" class="control-label">Machine Identifier</label>
|
||||
<div class="">
|
||||
<input type="text" class="form-control-custom form-control" id="MachineIdentifier" name="MachineIdentifier" [(ngModel)]="server.machineIdentifier"
|
||||
value="{{server.machineIdentifier}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-5" style="float:right;">
|
||||
<div class="form-group">
|
||||
<label for="username" class="control-label">Username and Password</label>
|
||||
<div>
|
||||
<input type="text" class="form-control form-control-custom" id="username" [(ngModel)]="username" placeholder="username">
|
||||
</div>
|
||||
<br />
|
||||
<div>
|
||||
<input type="password" class="form-control form-control-custom" id="password" [(ngModel)]="password" placeholder="Password">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button id="requestToken" (click)="requestServers(server)" class="btn btn-primary-outline">Load Servers
|
||||
<i class="fa fa-key"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<div class="form-group" *ngIf="loadedServers">
|
||||
<label for="username" class="control-label">Please select the server</label>
|
||||
<br />
|
||||
<div class="btn-group">
|
||||
<div class="btn-group">
|
||||
<a [attr.disabled]="!serversButton ? true : null" href="#" class="btn btn-info-outline dropdown-toggle" data-toggle="dropdown"
|
||||
aria-expanded="false">
|
||||
Servers
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
|
||||
<ul *ngIf="loadedServers" class="dropdown-menu">
|
||||
<li *ngFor="let s of loadedServers.servers.server">
|
||||
<a (click)="selectServer(s,server)">{{s.name}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<label>Please select the libraries you want Ombi to look in for content</label>
|
||||
<br />
|
||||
<small>Note: if nothing is selected, we will monitor all libraries</small>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button (click)="loadLibraries(server)" class="btn btn-primary-outline">Load Libraries
|
||||
<i class="fa fa-film"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="server.plexSelectedLibraries">
|
||||
<div *ngFor="let lib of server.plexSelectedLibraries">
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="{{lib.title}}" [(ngModel)]="lib.enabled" [checked]="lib.enabled">
|
||||
<label for="{{lib.title}}">{{lib.title}}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" *ngIf="advanced">
|
||||
<label for="episodeBatchSize" class="control-label">Episode Batch Size</label>
|
||||
<div>
|
||||
<input type="number" class="form-control-custom form-small form-control" id="episodeBatchSize" name="episodeBatchSize" [(ngModel)]="server.episodeBatchSize"
|
||||
value="{{server.episodeBatchSize}}" tooltipPosition="top" pTooltip="This is used when we cache the episodes, we cache in batches of 50 by default, you can configure how many we do at a time here">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button id="testPlex" type="button" (click)="testPlex(server)" class="btn btn-primary-outline">
|
||||
Test Connectivity
|
||||
<div id="spinner"></div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</ng-template>
|
||||
</ngb-tab>
|
||||
</div>
|
||||
</ngb-tabset>
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button (click)="save()" type="submit" id="save" class="btn btn-primary-outline">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button (click)="runCacher()" type="button" id="save" class="btn btn-primary-outline">Manually Run Full Sync</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button (click)="runRecentlyAddedCacher()" type="button" id="save" class="btn btn-primary-outline">Manually Run Recently Added Sync</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
|
@ -3,44 +3,52 @@
|
|||
<fieldset style="width:100%;">
|
||||
<legend>Plex Configuration</legend>
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-6 col-sm-6" style="float: right; width:100%; text-align:right;">
|
||||
<div style="float:right;text-align:left;">
|
||||
<div class="col-md-6 col-6 col-sm-6">
|
||||
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle [(ngModel)]="settings.enable" [checked]="settings.enable">Enable</mat-slide-toggle>
|
||||
<mat-slide-toggle [(ngModel)]="settings.enable" [checked]="settings.enable">Enable
|
||||
</mat-slide-toggle>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle [(ngModel)]="advanced">Advanced</mat-slide-toggle>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<mat-tab-group #tabGroup [selectedIndex]="selected.value" (selectedTabChange)="addTab($event)" (selectedIndexChange)="selected.setValue($event)" animationDuration="0ms" style="width:100%;">
|
||||
<mat-tab-group #tabGroup [selectedIndex]="selected.value" (selectedTabChange)="addTab($event)"
|
||||
(selectedIndexChange)="selected.setValue($event)" animationDuration="0ms" style="width:100%;">
|
||||
<mat-tab *ngFor="let server of settings.servers" [label]="server.name">
|
||||
<div class="col-md-6 col-6 col-sm-6" style="float: right; width:100%; text-align:right;">
|
||||
<button type="button" (click)="removeServer(server)" class="mat-focus-indicator mat-flat-button mat-button-base mat-warn">Remove Server</button>
|
||||
<button type="button" (click)="removeServer(server)"
|
||||
class="mat-focus-indicator mat-flat-button mat-button-base mat-warn">Remove Server</button>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<div class="col-md-7 col-8 col-sm-12">
|
||||
<!-- Main Content -->
|
||||
<label for="username" class="control-label"><h3>Plex Server Configuration</h3></label>
|
||||
<label for="username" class="control-label">
|
||||
<h3>Plex Server Configuration</h3>
|
||||
</label>
|
||||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" floatLabel=auto>
|
||||
<mat-label>Server Name</mat-label>
|
||||
<input matInput id="name" name="name" placeholder="Server Name" [(ngModel)]="server.name" value="{{server.name}}">
|
||||
<input matInput id="name" name="name"
|
||||
[(ngModel)]="server.name" value="{{server.name}}">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" floatLabel=auto>
|
||||
<mat-label>Hostname or IP</mat-label>
|
||||
<input matInput id="Ip" name="Ip" placeholder="localhost" [(ngModel)]="server.ip" value="{{server.ip}}">
|
||||
<input matInput id="Ip" name="Ip" [(ngModel)]="server.ip"
|
||||
value="{{server.ip}}">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field appearance="outline" floatLabel=auto>
|
||||
<mat-label>Port</mat-label>
|
||||
<input matInput id="portNumber" name="Port" placeholder="Port Number" [(ngModel)]="server.port" value="{{server.port}}">
|
||||
<input matInput id="portNumber" name="Port"
|
||||
[(ngModel)]="server.port" value="{{server.port}}">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-slide-toggle id="ssl" [(ngModel)]="server.ssl" [checked]="server.ssl">
|
||||
|
@ -50,40 +58,27 @@
|
|||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" floatLabel=auto>
|
||||
<mat-label>Plex Authorization Token</mat-label>
|
||||
<input matInput id="authToken" placeholder="Plex Auth Token" [(ngModel)]="server.plexAuthToken" value="{{server.plexAuthToken}}">
|
||||
<input matInput id="authToken"
|
||||
[(ngModel)]="server.plexAuthToken" value="{{server.plexAuthToken}}">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field appearance="outline" floatLabel=auto>
|
||||
<mat-label>Machine Identifier</mat-label>
|
||||
<input matInput id="MachineIdentifier" name="MachineIdentifier" [(ngModel)]="server.machineIdentifier" value="{{server.machineIdentifier}}">
|
||||
<input matInput id="MachineIdentifier" name="MachineIdentifier"
|
||||
[(ngModel)]="server.machineIdentifier" value="{{server.machineIdentifier}}">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<label for="username" class="control-label"><h3>Plex Credentials</h3></label>
|
||||
<div>
|
||||
<div class="md-form-field" *ngIf="advanced">
|
||||
<mat-form-field appearance="outline" floatLabel=auto>
|
||||
<mat-label>Username</mat-label>
|
||||
<input matInput id="username" placeholder="username" [(ngModel)]="username" value="{{username}}">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div>
|
||||
<mat-form-field appearance="outline" floatLabel=auto>
|
||||
<mat-label>Password</mat-label>
|
||||
<input matInput type="password" id="password" placeholder="Password" [(ngModel)]="password" value="{{password}}">
|
||||
<mat-label for="episodeBatchSize" class="control-label">Episode Batch Size</mat-label>
|
||||
<input matInput type="number" id="episodeBatchSize" name="episodeBatchSize"
|
||||
[(ngModel)]="server.episodeBatchSize" value="{{server.episodeBatchSize}}"
|
||||
matTooltip="This is used when we cache the episodes, we cache in batches of 50 by default, you can configure how many we do at a time here"
|
||||
matTooltipPosition="right">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-5 col-4 col-sm-12">
|
||||
<label for="username" class="control-label"><h3>Plex Interface</h3></label>
|
||||
<div class="md-form-field">
|
||||
<div>
|
||||
<button mat-raised-button id="requestToken" (click)="requestServers(server)" class="mat-stroked-button">Load Servers
|
||||
<i class="fa fa-key"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="md-form-field" *ngIf="loadedServers">
|
||||
<label for="username" class="control-label">Please select the server</label>
|
||||
<br />
|
||||
|
@ -92,7 +87,9 @@
|
|||
<mat-form-field appearance="outline">
|
||||
<mat-label>Server</mat-label>
|
||||
<mat-select>
|
||||
<mat-option (click)="selectServer(s,server)" *ngFor="let s of loadedServers.servers.server" [value]="s.server">{{s.name}}</mat-option>
|
||||
<mat-option (click)="selectServer(s,server)"
|
||||
*ngFor="let s of loadedServers.servers.server" [value]="s.server">
|
||||
{{s.name}}</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
@ -103,7 +100,8 @@
|
|||
<small>Note: if nothing is selected, we will monitor all libraries</small>
|
||||
<div class="md-form-field">
|
||||
<div>
|
||||
<button mat-raised-button (click)="loadLibraries(server)" class="mat-focus-indicator mat-stroked-button mat-button-base">Load Libraries
|
||||
<button mat-raised-button (click)="loadLibraries(server)"
|
||||
class="mat-focus-indicator mat-stroked-button mat-button-base">Load Libraries
|
||||
<i class="fa fa-film"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -113,31 +111,61 @@
|
|||
<div *ngFor="let lib of server.plexSelectedLibraries">
|
||||
<div class="md-form-field">
|
||||
<div class="checkbox">
|
||||
<mat-slide-toggle [(ngModel)]="lib.enabled" [checked]="lib.enabled" for="{{lib.title}}">{{lib.title}}</mat-slide-toggle>
|
||||
<mat-slide-toggle [(ngModel)]="lib.enabled" [checked]="lib.enabled"
|
||||
for="{{lib.title}}">{{lib.title}}</mat-slide-toggle>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-5 col-4 col-sm-12">
|
||||
<div class="md-form-field">
|
||||
<label for="username" class="control-label">
|
||||
<h3>Plex Credentials</h3>
|
||||
<small>These fields are optional to automatically fill in your Plex server settings</small>
|
||||
</label>
|
||||
<div>
|
||||
<mat-form-field appearance="outline" floatLabel=auto>
|
||||
<mat-label>Username</mat-label>
|
||||
<input matInput id="username" [(ngModel)]="username"
|
||||
value="{{username}}">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div>
|
||||
<mat-form-field appearance="outline" floatLabel=auto>
|
||||
<mat-label>Password</mat-label>
|
||||
<input matInput type="password" id="password"
|
||||
[(ngModel)]="password" value="{{password}}">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<div>
|
||||
<button mat-raised-button id="requestToken" (click)="requestServers(server)"
|
||||
class="mat-stroked-button">Load Servers
|
||||
<i class="fa fa-key"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="md-form-field" *ngIf="advanced">
|
||||
<mat-form-field appearance="outline" floatLabel=auto>
|
||||
<mat-label for="episodeBatchSize" class="control-label">Episode Batch Size</mat-label>
|
||||
<input matInput type="number" id="episodeBatchSize" name="episodeBatchSize" [(ngModel)]="server.episodeBatchSize"
|
||||
value="{{server.episodeBatchSize}}" matTooltip ="This is used when we cache the episodes, we cache in batches of 50 by default, you can configure how many we do at a time here" matTooltipPosition="right">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-group">
|
||||
<button mat-raised-button id="testPlex" type="button" (click)="testPlex(server)" class="mat-focus-indicator mat-stroked-button mat-button-base">
|
||||
<button mat-raised-button id="testPlex" type="button" (click)="testPlex(server)"
|
||||
class="mat-focus-indicator mat-stroked-button mat-button-base">
|
||||
Test Connectivity
|
||||
<div id="spinner"></div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button mat-raised-button (click)="runCacher()" type="button" id="save" class="mat-focus-indicator mat-stroked-button mat-button-base">Manually Run Full Sync</button><br />
|
||||
<button mat-raised-button (click)="runCacher()" type="button" id="save"
|
||||
class="mat-focus-indicator mat-stroked-button mat-button-base">Manually Run Full
|
||||
Sync</button><br />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button mat-raised-button (click)="runRecentlyAddedCacher()" type="button" id="save" class="mat-focus-indicator mat-stroked-button mat-button-base">Manually Run Recently Added Sync</button>
|
||||
<button mat-raised-button (click)="runRecentlyAddedCacher()" type="button" id="save"
|
||||
class="mat-focus-indicator mat-stroked-button mat-button-base">Manually Run Recently
|
||||
Added Sync</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -149,10 +177,12 @@
|
|||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button mat-raised-button (click)="save()" type="submit" id="save" class="mat-focus-indicator mat-raised-button mat-button-base mat-accent">Submit</button>
|
||||
<button mat-raised-button (click)="save()" type="submit" id="save"
|
||||
class="mat-focus-indicator mat-raised-button mat-button-base mat-accent">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div><!--(){{settings|json}}-->
|
||||
</div>
|
||||
<!--(){{settings|json}}-->
|
|
@ -4,8 +4,8 @@
|
|||
<legend>Radarr Settings</legend>
|
||||
<form novalidate [formGroup]="form" (ngSubmit)="onSubmit(form)">
|
||||
<div class="row">
|
||||
<div class="col-md-12 col-12 col-sm-12" style="float: right; width:100%; text-align:right;">
|
||||
<div style="float: right; text-align: left; margin-left:20px;">
|
||||
<div class="col-md-12 col-12 col-sm-12">
|
||||
<div >
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle formControlName="enabled" id="enable">Enable</mat-slide-toggle>
|
||||
</div>
|
||||
|
@ -19,35 +19,35 @@
|
|||
<div class="col-md-7 col-8 col-sm-12">
|
||||
<label for="username" class="control-label"><h3>Server Configuration</h3></label>
|
||||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" floatLabel=always>
|
||||
<mat-form-field appearance="outline" >
|
||||
<mat-label>Hostname or IP</mat-label>
|
||||
<input matInput placeholder="Hostname or IP" formControlName="ip" placeholder="localhost">
|
||||
<input matInput formControlName="ip">
|
||||
</mat-form-field>
|
||||
<mat-form-field appearance="outline" floatLabel=always>
|
||||
<mat-form-field appearance="outline" >
|
||||
<mat-label>Port</mat-label>
|
||||
<input matInput placeholder="Port" formControlName="port" placeholder="Port Number">
|
||||
<input matInput formControlName="port">
|
||||
</mat-form-field>
|
||||
<mat-slide-toggle formControlName="ssl">
|
||||
SSL
|
||||
</mat-slide-toggle>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" floatLabel=always>
|
||||
<mat-form-field appearance="outline" >
|
||||
<mat-label>API key</mat-label>
|
||||
<input matInput placeholder="API Key" formControlName="apiKey" placeholder="API key">
|
||||
<input matInput formControlName="apiKey">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" floatLabel=always>
|
||||
<mat-form-field appearance="outline" >
|
||||
<mat-label>Base URL</mat-label>
|
||||
<input matInput placeholder="Base Url" formControlName="subDir">
|
||||
<input matInput formControlName="subDir">
|
||||
</mat-form-field>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-5 col-4 col-sm-12">
|
||||
<label for="username" class="control-label"><h3>Interface</h3></label>
|
||||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" floatLabel=always>
|
||||
<mat-form-field appearance="outline" >
|
||||
<mat-label>Quality Profiles</mat-label>
|
||||
<mat-select formControlName="defaultQualityProfile" required>
|
||||
<mat-option *ngFor="let quality of qualities" [value]="quality.id">
|
||||
|
@ -60,7 +60,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" floatLabel=always>
|
||||
<mat-form-field appearance="outline" >
|
||||
<mat-label>Default Root Folder</mat-label>
|
||||
<mat-select formControlName="defaultRootPath" required>
|
||||
<mat-option *ngFor="let folder of rootFolders" [value]="folder.path">
|
||||
|
@ -73,7 +73,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<mat-form-field appearance="outline" floatLabel=always>
|
||||
<mat-form-field appearance="outline" >
|
||||
<mat-label>Default Minimum Availability</mat-label>
|
||||
<mat-select formControlName="minimumAvailability" required>
|
||||
<mat-option *ngFor="let min of minimumAvailabilityOptions" [value]="min.value">
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<legend>SickRage Settings</legend>
|
||||
<form novalidate [formGroup]="form" (ngSubmit)="onSubmit(form)">
|
||||
<div class="row">
|
||||
<div class="col-md-12 col-12 col-sm-12" style="float: right; width:100%; text-align:right;">
|
||||
<div class="col-md-12 col-12 col-sm-12">
|
||||
<div style="float:right;text-align:left;">
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle id="enable" formControlName="enabled">Enable</mat-slide-toggle>
|
||||
|
|
|
@ -1,192 +0,0 @@
|
|||
<settings-menu></settings-menu>
|
||||
<div *ngIf="form" class="small-middle-container">
|
||||
<fieldset>
|
||||
<legend>Sonarr Settings</legend>
|
||||
<form novalidate [formGroup]="form" (ngSubmit)="onSubmit(form)" style="padding-top:3%;">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-6 col-sm-6" style="float: right; width:100%; text-align:right;">
|
||||
<div style="float:right;text-align:left;">
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle formControlName="v3">V3</mat-slide-toggle>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle formControlName="ssl">SSL</mat-slide-toggle>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right; text-align: left; margin-left:20px;">
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle formControlName="enabled" id="enable">Enable</mat-slide-toggle>
|
||||
</div>
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle [(ngModel)]="advanced" [ngModelOptions]="{standalone: true}">Advanced</mat-slide-toggle>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right;">
|
||||
<span style="vertical-align: top;">Advanced</span>
|
||||
<p-inputSwitch id="customInputSwitch" [(ngModel)]="advanced" [ngModelOptions]="{standalone: true}"></p-inputSwitch>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6" style="display:block;">
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="enable" formControlName="enabled">
|
||||
<label for="enable">Enable</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="v3" formControlName="v3">
|
||||
<label for="v3">V3</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="Ssl" name="Ssl" formControlName="ssl">
|
||||
<label for="Ssl">SSL</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="Ip" class="control-label">Sonarr Hostname or IP
|
||||
|
||||
<i *ngIf="form.get('ip').hasError('required')" class="fa fa-exclamation-circle error-text" pTooltip="The IP/Hostname is required"></i>
|
||||
</label>
|
||||
|
||||
<input type="text" class="form-control form-control-custom " formControlName="ip" id="Ip" name="Ip" placeholder="localhost" [ngClass]="{'form-error': form.get('ip').hasError('required')}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="portNumber" class="control-label">Port
|
||||
|
||||
<i *ngIf="form.get('port').hasError('required')" class="fa fa-exclamation-circle error-text" pTooltip="The Port is required"></i>
|
||||
</label>
|
||||
|
||||
<input type="text" class="form-control form-control-custom " [ngClass]="{'form-error': form.get('port').hasError('required')}" formControlName="port" id="portNumber" name="Port" placeholder="Port Number">
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label for="ApiKey" class="control-label">Sonarr API Key
|
||||
|
||||
<i *ngIf="form.get('apiKey').hasError('required')" class="fa fa-exclamation-circle error-text" pTooltip="The API Key is required"></i>
|
||||
</label>
|
||||
|
||||
<input type="text" class="form-control form-control-custom " [ngClass]="{'form-error': form.get('apiKey').hasError('required')}" formControlName="apiKey" id="ApiKey" name="ApiKey">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="SubDir" class="control-label">Sonarr Base Url</label>
|
||||
<div>
|
||||
<input type="text" class="form-control form-control-custom" formControlName="subDir" id="SubDir" name="SubDir">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
|
||||
<div class="form-group col-md-12">
|
||||
<label for="profiles" class="control-label">Quality Profiles
|
||||
<i *ngIf="form.get('qualityProfile').hasError('required')" class="fa fa-exclamation-circle error-text" pTooltip="A Default Quality Profile is required"></i>
|
||||
</label>
|
||||
<div id="profiles">
|
||||
<select class="form-control form-control-custom col-md-5 form-half" [ngClass]="{'form-error': form.get('qualityProfile').hasError('required')}" id="select" formControlName="qualityProfile">
|
||||
<option *ngFor="let quality of qualities" value="{{quality.id}}">{{quality.name}}</option>
|
||||
</select>
|
||||
<button type="button" (click)="getProfiles(form)" class="btn btn-primary-outline col-md-4 col-md-push-1 load">
|
||||
Load Qualities <span *ngIf="profilesRunning" class="fa fa-spinner fa-spin"></span></button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group col-md-12">
|
||||
<label for="select" class="control-label">Quality Profiles (Anime)</label>
|
||||
<div id="qualityProfileAnime">
|
||||
<select class="form-control form-control-custom col-md-5 form-half" id="qualityProfileAnime" formControlName="qualityProfileAnime">
|
||||
<option *ngFor="let quality of qualities" value="{{quality.id}}">{{quality.name}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group col-md-12">
|
||||
<label for="rootFolders" class="control-label">Default Root Folders
|
||||
|
||||
<i *ngIf="form.get('rootPath').hasError('required')" class="fa fa-exclamation-circle error-text" pTooltip="A Default Root Path is required"></i>
|
||||
</label>
|
||||
<div id="rootFolders">
|
||||
<select class="form-control form-control-custom col-md-5 form-half" formControlName="rootPath" [ngClass]="{'form-error': form.get('rootPath').hasError('required')}">
|
||||
<option *ngFor="let folder of rootFolders" value="{{folder.id}}">{{folder.path}}</option>
|
||||
</select>
|
||||
<button type="button" (click)="getRootFolders(form)" class="btn btn-primary-outline load col-md-4 col-md-push-1">
|
||||
Load Folders <span *ngIf="rootFoldersRunning" class="fa fa-spinner fa-spin"></span></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-12">
|
||||
<label for="rootFoldersAnime" class="control-label">Default Root Folders (Anime)</label>
|
||||
<div id="rootFoldersAnime">
|
||||
<select class="form-control form-control-custom col-md-5 form-half" formControlName="rootPathAnime">
|
||||
<option *ngFor="let folder of rootFoldersAnime" value="{{folder.id}}">{{folder.path}}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-12" *ngIf="form.controls.v3.value">
|
||||
<label for="select" class="control-label">Language Profiles
|
||||
<i *ngIf="form.get('languageProfile').hasError('required')" class="fa fa-exclamation-circle error-text" pTooltip="A Language Profile is required"></i>
|
||||
</label>
|
||||
<div id="langaugeProfile">
|
||||
<select formControlName="languageProfile" class="form-control form-control-custom col-md-5 form-half" id="select" [ngClass]="{'form-error': form.get('languageProfile').hasError('required')}">
|
||||
<option *ngFor="let lang of languageProfiles" [ngValue]="lang.id">{{lang.name}}</option>
|
||||
</select>
|
||||
<button (click)="getLanguageProfiles(form)" type="button" class="btn btn-primary-outline col-md-4 col-md-push-1">Load
|
||||
Languages <span *ngIf="langRunning" class="fa fa-spinner fa-spin"> </span></button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group col-md-12">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="SeasonFolders" name="SeasonFolders" formControlName="seasonFolders">
|
||||
<label for="SeasonFolders">Enable season folders</label>
|
||||
</div>
|
||||
<label>Enabled Season Folders to organize seasons into individual folders within a show.</label>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-12" *ngIf="advanced" style="color:#ff761b">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="addOnly" formControlName="addOnly">
|
||||
<label for="addOnly">Do not search</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-group col-md-7">
|
||||
<div>
|
||||
<button type="submit" class="btn btn-primary-outline ">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-7">
|
||||
<div>
|
||||
<button type="button" (click)="test(form)" class="btn btn-primary-outline">Test Connectivity
|
||||
<span id="spinner"> </span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>
|
||||
</div>
|
|
@ -3,14 +3,14 @@
|
|||
<fieldset>
|
||||
<legend>Sonarr Settings</legend>
|
||||
<form novalidate [formGroup]="form" (ngSubmit)="onSubmit(form)">
|
||||
<div class="row">
|
||||
<div class="col-md-12 col-12 col-sm-12" style="float: right; width:100%; text-align:right;">
|
||||
<div style="float:right;text-align:left;">
|
||||
<div class="row top-spacing">
|
||||
<div class="col-md-12 col-12 col-sm-12" >
|
||||
<div>
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle formControlName="v3">V3</mat-slide-toggle>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right; text-align: left; margin-left:20px;">
|
||||
<div >
|
||||
<div class="md-form-field">
|
||||
<mat-slide-toggle formControlName="enabled" id="enable">Enable</mat-slide-toggle>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue