Skip to content

Commit 0b0c72c

Browse files
committed
add to settings
1 parent 3978e7a commit 0b0c72c

File tree

3 files changed

+255
-168
lines changed

3 files changed

+255
-168
lines changed

src/app/models/settings.ts

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
export class Settings {
2-
recording_path?: string;
3-
use_stream_caching?: boolean;
4-
mpv_params?: string;
5-
default_view?: number;
6-
volume?: number;
7-
refresh_on_start?: boolean
8-
}
2+
recording_path?: string;
3+
use_stream_caching?: boolean;
4+
mpv_params?: string;
5+
default_view?: number;
6+
volume?: number;
7+
refresh_on_start?: boolean;
8+
restream_port?: number;
9+
}
+177-110
Original file line numberDiff line numberDiff line change
@@ -1,131 +1,198 @@
11
<svg (click)="goBack()" class="arrow" fill="currentColor" viewBox="0 0 24 24">
2-
<path
3-
d="M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M18,11H10L13.5,7.5L12.08,6.08L6.16,12L12.08,17.92L13.5,16.5L10,13H18V11Z" />
2+
<path
3+
d="M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M18,11H10L13.5,7.5L12.08,6.08L6.16,12L12.08,17.92L13.5,16.5L10,13H18V11Z"
4+
/>
45
</svg>
56
<div class="container px-5">
6-
<h2 class="mt-4 mb-4 text-center">Settings</h2>
7-
<div class="row align-items-center">
8-
<div class="col-4">
9-
<label [ngbTooltip]="'Where recorded livestreams will be saved'">Recording path</label>
10-
</div>
11-
<div class="col">
12-
<div class="d-flex align-items-center">
13-
<span class="selectable" *ngIf="!settings.recording_path" id="default-path">~/Home/Videos</span>
14-
<span class="selectable" *ngIf="settings.recording_path">{{settings.recording_path}}</span>
15-
<button (click)="selectFolder()" class="btn btn-primary btn-sm ms-4 d-inline-flex align-items-center">
16-
<span>Change</span>
17-
<svg fill="currentColor" class="ms-2 folder" viewBox="0 0 24 24">
18-
<path
19-
d="M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z" />
20-
</svg>
21-
</button>
22-
</div>
23-
</div>
7+
<h2 class="mt-4 mb-4 text-center">Settings</h2>
8+
<div class="row align-items-center">
9+
<div class="col-4">
10+
<label [ngbTooltip]="'Where recorded livestreams will be saved'">Recording path</label>
2411
</div>
12+
<div class="col">
13+
<div class="d-flex align-items-center">
14+
<span class="selectable" *ngIf="!settings.recording_path" id="default-path"
15+
>~/Home/Videos</span
16+
>
17+
<span class="selectable" *ngIf="settings.recording_path">{{
18+
settings.recording_path
19+
}}</span>
20+
<button
21+
(click)="selectFolder()"
22+
class="btn btn-primary btn-sm ms-4 d-inline-flex align-items-center"
23+
>
24+
<span>Change</span>
25+
<svg fill="currentColor" class="ms-2 folder" viewBox="0 0 24 24">
26+
<path
27+
d="M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z"
28+
/>
29+
</svg>
30+
</button>
31+
</div>
32+
</div>
33+
</div>
2534

26-
<div class="row mt-3 align-items-center">
27-
<div class="col-4">
28-
<span
29-
[ngbTooltip]="'Launch parameters applied to all channels. Leave as-is if you don\'t know what this is'">Global
30-
MPV Parameters</span>
31-
</div>
32-
<div class="col">
33-
<textarea #mpvParams id="mpvParams" [(ngModel)]="settings.mpv_params"
34-
placeholder="mpv params like: --hwdec auto. Don't touch this unless you know what you're doing!"
35-
class="form-control"></textarea>
36-
</div>
35+
<div class="row mt-3 align-items-center">
36+
<div class="col-4">
37+
<span
38+
[ngbTooltip]="
39+
'Launch parameters applied to all channels. Leave as-is if you don\'t know what this is'
40+
"
41+
>Global MPV Parameters</span
42+
>
3743
</div>
44+
<div class="col">
45+
<textarea
46+
#mpvParams
47+
id="mpvParams"
48+
[(ngModel)]="settings.mpv_params"
49+
placeholder="mpv params like: --hwdec auto. Don't touch this unless you know what you're doing!"
50+
class="form-control"
51+
></textarea>
52+
</div>
53+
</div>
3854

39-
<div class="row mt-3 align-items-center">
40-
<div class="col-4">
41-
<span>Default view</span>
42-
</div>
43-
<div class="col">
44-
<select (ngModelChange)="updateSettings()" [(ngModel)]="settings.default_view" class="form-control">
45-
<option [ngValue]="viewModeEnum.All">All</option>
46-
<option [ngValue]="viewModeEnum.Categories">Categories</option>
47-
<option [ngValue]="viewModeEnum.Favorites">Favorites</option>
48-
</select>
49-
</div>
55+
<div class="row mt-3 align-items-center">
56+
<div class="col-4">
57+
<span>Default view</span>
58+
</div>
59+
<div class="col">
60+
<select
61+
(ngModelChange)="updateSettings()"
62+
[(ngModel)]="settings.default_view"
63+
class="form-control"
64+
>
65+
<option [ngValue]="viewModeEnum.All">All</option>
66+
<option [ngValue]="viewModeEnum.Categories">Categories</option>
67+
<option [ngValue]="viewModeEnum.Favorites">Favorites</option>
68+
</select>
5069
</div>
70+
</div>
5171

52-
<div class="row mt-3 align-items-center">
53-
<div class="col-4">
54-
<span>Volume on start</span>
55-
</div>
56-
<div class="col d-inline-flex">
57-
<input type="range" style="flex-grow: 10; width: auto;" step="1" class="form-range" min="0" max="100"
58-
[(ngModel)]="settings.volume" (ngModelChange)="updateSettings()">
59-
<span style="flex-grow: 0.5;" class="text-end">{{settings.volume}}</span>
60-
</div>
72+
<div class="row mt-3 align-items-center">
73+
<div class="col-4">
74+
<span>Volume on start</span>
6175
</div>
76+
<div class="col d-inline-flex">
77+
<input
78+
type="range"
79+
style="flex-grow: 10; width: auto"
80+
step="1"
81+
class="form-range"
82+
min="0"
83+
max="100"
84+
[(ngModel)]="settings.volume"
85+
(ngModelChange)="updateSettings()"
86+
/>
87+
<span style="flex-grow: 0.5" class="text-end">{{ settings.volume }}</span>
88+
</div>
89+
</div>
6290

63-
<div class="row mt-3 align-items-center">
64-
<div class="col-4">
65-
<span
66-
[ngbTooltip]="'Depending on your provider/internet connection, using no caching would give you a lower latency and a more stable experience'">Use
67-
stream caching</span>
68-
</div>
69-
<div class="col">
70-
<div class="form-check form-switch">
71-
<input [(ngModel)]="settings.use_stream_caching" (ngModelChange)="updateSettings()"
72-
class="form-check-input" type="checkbox">
73-
</div>
74-
</div>
91+
<div class="row mt-3 align-items-center">
92+
<div class="col-4">
93+
<span>Re-stream port</span>
94+
</div>
95+
<div class="col">
96+
<input
97+
class="form-control"
98+
style="width: 10rem"
99+
type="number"
100+
[(ngModel)]="settings.restream_port"
101+
/>
75102
</div>
103+
</div>
76104

77-
<div class="row mt-3 align-items-center">
78-
<div class="col-4">
79-
<span>Refresh all sources on start</span>
80-
</div>
81-
<div class="col">
82-
<div class="form-check form-switch">
83-
<input [(ngModel)]="settings.refresh_on_start" (ngModelChange)="updateSettings()"
84-
class="form-check-input" type="checkbox">
85-
</div>
86-
</div>
105+
<div class="row mt-3 align-items-center">
106+
<div class="col-4">
107+
<span
108+
[ngbTooltip]="
109+
'Depending on your provider/internet connection, using no caching would give you a lower latency and a more stable experience'
110+
"
111+
>Use stream caching</span
112+
>
113+
</div>
114+
<div class="col">
115+
<div class="form-check form-switch">
116+
<input
117+
[(ngModel)]="settings.use_stream_caching"
118+
(ngModelChange)="updateSettings()"
119+
class="form-check-input"
120+
type="checkbox"
121+
/>
122+
</div>
87123
</div>
124+
</div>
88125

89-
<h2 class="mt-4 mb-4 text-center">Sources</h2>
90-
<ng-container *ngFor="let source of sources; let i = index">
91-
<div [ngClass]="{'mt-3': i != 0}">
92-
<app-source-tile [source]="source"></app-source-tile>
93-
</div>
94-
</ng-container>
126+
<div class="row mt-3 align-items-center">
127+
<div class="col-4">
128+
<span>Refresh all sources on start</span>
129+
</div>
130+
<div class="col">
131+
<div class="form-check form-switch">
132+
<input
133+
[(ngModel)]="settings.refresh_on_start"
134+
(ngModelChange)="updateSettings()"
135+
class="form-check-input"
136+
type="checkbox"
137+
/>
138+
</div>
139+
</div>
140+
</div>
95141

96-
<div class="mt-4 d-flex flex-wrap gap-3">
97-
<button [disabled]="memory.Loading" (click)="addSource()"
98-
class="btn btn-primary d-inline-flex align-items-center">
99-
<span>Add source </span>
100-
<svg class="plus ms-1" fill="currentColor" viewBox="0 0 24 24">
101-
<path d="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z" />
102-
</svg>
103-
</button>
104-
<button [disabled]="memory.Loading" (click)="refreshAll()"
105-
class="btn btn-secondary d-inline-flex align-items-center">Refresh all
106-
<svg class="refresh ms-1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
107-
<path fill="currentColor"
108-
d="M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z" />
109-
</svg>
110-
</button>
111-
<button ngbTooltip="Use this if an upgrade didn't fix a bug you're experiencing"
112-
class="btn btn-danger d-inline-flex align-items-center" [disabled]="memory.Loading"
113-
(click)="nuke()">Delete everything
114-
<svg class="nuke ms-1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
115-
<path fill="currentColor"
116-
d="M14.04,12H10V11H5.5A3.5,3.5 0 0,1 2,7.5A3.5,3.5 0 0,1 5.5,4C6.53,4 7.45,4.44 8.09,5.15C8.5,3.35 10.08,2 12,2C13.92,2 15.5,3.35 15.91,5.15C16.55,4.44 17.47,4 18.5,4A3.5,3.5 0 0,1 22,7.5A3.5,3.5 0 0,1 18.5,11H14.04V12M10,16.9V15.76H5V13.76H19V15.76H14.04V16.92L20,19.08C20.58,19.29 21,19.84 21,20.5A1.5,1.5 0 0,1 19.5,22H4.5A1.5,1.5 0 0,1 3,20.5C3,19.84 3.42,19.29 4,19.08L10,16.9Z" />
117-
</svg>
118-
</button>
142+
<h2 class="mt-4 mb-4 text-center">Sources</h2>
143+
<ng-container *ngFor="let source of sources; let i = index">
144+
<div [ngClass]="{ 'mt-3': i != 0 }">
145+
<app-source-tile [source]="source"></app-source-tile>
119146
</div>
147+
</ng-container>
120148

149+
<div class="mt-4 d-flex flex-wrap gap-3">
150+
<button
151+
[disabled]="memory.Loading"
152+
(click)="addSource()"
153+
class="btn btn-primary d-inline-flex align-items-center"
154+
>
155+
<span>Add source </span>
156+
<svg class="plus ms-1" fill="currentColor" viewBox="0 0 24 24">
157+
<path d="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z" />
158+
</svg>
159+
</button>
160+
<button
161+
[disabled]="memory.Loading"
162+
(click)="refreshAll()"
163+
class="btn btn-secondary d-inline-flex align-items-center"
164+
>
165+
Refresh all
166+
<svg class="refresh ms-1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
167+
<path
168+
fill="currentColor"
169+
d="M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z"
170+
/>
171+
</svg>
172+
</button>
173+
<button
174+
ngbTooltip="Use this if an upgrade didn't fix a bug you're experiencing"
175+
class="btn btn-danger d-inline-flex align-items-center"
176+
[disabled]="memory.Loading"
177+
(click)="nuke()"
178+
>
179+
Delete everything
180+
<svg class="nuke ms-1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
181+
<path
182+
fill="currentColor"
183+
d="M14.04,12H10V11H5.5A3.5,3.5 0 0,1 2,7.5A3.5,3.5 0 0,1 5.5,4C6.53,4 7.45,4.44 8.09,5.15C8.5,3.35 10.08,2 12,2C13.92,2 15.5,3.35 15.91,5.15C16.55,4.44 17.47,4 18.5,4A3.5,3.5 0 0,1 22,7.5A3.5,3.5 0 0,1 18.5,11H14.04V12M10,16.9V15.76H5V13.76H19V15.76H14.04V16.92L20,19.08C20.58,19.29 21,19.84 21,20.5A1.5,1.5 0 0,1 19.5,22H4.5A1.5,1.5 0 0,1 3,20.5C3,19.84 3.42,19.29 4,19.08L10,16.9Z"
184+
/>
185+
</svg>
186+
</button>
187+
</div>
121188
</div>
122189

123190
<div class="author mt-5 mb-4">
124-
<p>
125-
<a href="https://github.com/Fredolx/open-tv/discussions/69" target="_blank">
126-
Made by Frédéric Lachapelle with ❤️
127-
<br>Please consider donating to support future updates
128-
<br>Open TV is currently not sustainable and needs your support
129-
</a>
130-
</p>
131-
</div>
191+
<p>
192+
<a href="https://github.com/Fredolx/open-tv/discussions/69" target="_blank">
193+
Made by Frédéric Lachapelle with ❤️
194+
<br />Please consider donating to support future updates <br />Open TV is currently not
195+
sustainable and needs your support
196+
</a>
197+
</p>
198+
</div>

0 commit comments

Comments
 (0)