mirror of
https://github.com/fHDHR/fHDHR_NextPVR.git
synced 2025-12-06 08:56:57 -05:00
Web Enhancements
This commit is contained in:
parent
e003d502c2
commit
d9e0cc13dd
@ -1,5 +1,7 @@
|
||||
from flask import request, redirect, session
|
||||
import urllib.parse
|
||||
import threading
|
||||
import time
|
||||
|
||||
|
||||
class Settings():
|
||||
@ -10,6 +12,9 @@ class Settings():
|
||||
def __init__(self, fhdhr):
|
||||
self.fhdhr = fhdhr
|
||||
|
||||
self.restart_url = "/api/settings?method=restart_actual"
|
||||
self.restart_sleep = 5
|
||||
|
||||
def __call__(self, *args):
|
||||
return self.get(*args)
|
||||
|
||||
@ -35,11 +40,18 @@ class Settings():
|
||||
self.fhdhr.config.write(config_section, config_name, config_value)
|
||||
|
||||
elif method == "restart":
|
||||
instance_id = request.args.get('instance_id', default=None, type=str)
|
||||
if instance_id == session["instance_id"]:
|
||||
restart_thread = threading.Thread(target=self.restart_thread)
|
||||
restart_thread.start()
|
||||
return redirect(redirect_url + "?retmessage=" + urllib.parse.quote("Restarting in %s seconds" % self.restart_sleep))
|
||||
|
||||
elif method == "restart_actual":
|
||||
session["restart"] = True
|
||||
|
||||
if redirect_url:
|
||||
return redirect(redirect_url + "?retmessage=" + urllib.parse.quote("%s Success" % method))
|
||||
else:
|
||||
return "%s Success" % method
|
||||
|
||||
def restart_thread(self):
|
||||
time.sleep(self.restart_sleep)
|
||||
self.fhdhr.api.get(self.restart_url)
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>{{ fhdhr.config.dict["fhdhr"]["friendlyname"] }}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<style>
|
||||
table, th, td {border: 1px solid black;}
|
||||
</style>
|
||||
<link href="style.css" rel="stylesheet">
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1 style="text-align: center;">
|
||||
<span style="text-decoration: underline;"><strong><em>{{ fhdhr.config.dict["fhdhr"]["friendlyname"] }}</em></strong>
|
||||
@ -15,14 +15,14 @@
|
||||
</h1>
|
||||
<br><br>
|
||||
<p></p>
|
||||
<div>
|
||||
|
||||
<button class="pull-left" onclick="OpenLink('/index')">fHDHR</button>
|
||||
<button class="pull-left" onclick="OpenLink('/origin')">{{ fhdhr.config.dict["main"]["servicename"] }}</button>
|
||||
<div>
|
||||
<button onclick="location.href='/index'" type="button">fHDHR</button>
|
||||
<button onclick="location.href='/origin'" type="button">{{ fhdhr.config.dict["main"]["servicename"] }}</button>
|
||||
|
||||
{% for page_dict in session["route_list"]["pages"] %}
|
||||
{% if session["route_list"]["pages"][page_dict]["name"] != "page_index_html" and fhdhr.config.dict["web_ui"]["access_level"] >= session["route_list"]["pages"][page_dict]["endpoint_access_level"] %}
|
||||
<button class="pull-left" onclick="OpenLink('{{ session["route_list"]["pages"][page_dict]["endpoints"][0] }}')">{{ session["route_list"]["pages"][page_dict]["pretty_name"] }}</button>
|
||||
<button onclick="location.href='{{ session["route_list"]["pages"][page_dict]["endpoints"][0] }}'" type="button">{{ session["route_list"]["pages"][page_dict]["pretty_name"] }}</button>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
@ -58,7 +58,7 @@
|
||||
{% if locations %}
|
||||
<div>
|
||||
{% for location in locations %}
|
||||
<button class="pull-left" onclick="OpenLink('{{ location["base_url"] }}')">{{ location["name"] }}</a></button>
|
||||
<button onclick="location.href='{{ location["base_url"] }}'" type="button">{{ location["name"] }}</button>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<hr align="center" width="100%">
|
||||
@ -73,6 +73,3 @@
|
||||
{% block content %}{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
<script>
|
||||
function OpenLink(NewURL) {window.open(NewURL, "_self");}
|
||||
</script>
|
||||
|
||||
@ -5,7 +5,8 @@
|
||||
<h4 style="text-align: center;">{{ fhdhr.config.dict["fhdhr"]["friendlyname"] }} Channels</h4>
|
||||
|
||||
<div style="text-align: center;">
|
||||
<button onclick="OpenLink('/api/tuners?method=scan&redirect=%2Fchannels')">Force Channel Update</a></button><p> Note: This may take some time.</p>
|
||||
<button onclick="location.href='/api/tuners?method=scan&redirect=/channels'" type="button">Force Channel Update</button>
|
||||
<p> Note: This may take some time.</p>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
@ -24,7 +25,7 @@
|
||||
|
||||
<br>
|
||||
<div style="text-align: center;">
|
||||
<button onclick="OpenLink('/channels_editor')">Edit Channels</a></button>
|
||||
<button onclick="location.href='/channels_editor'" type="button">Edit Channels</button>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
@ -45,7 +46,6 @@
|
||||
<tbody class="body-half-screen">
|
||||
{% for chan_dict in channelslist %}
|
||||
<tr>
|
||||
|
||||
<td>
|
||||
{% if chan_dict["enabled"] %}
|
||||
<a href="{{ chan_dict["play_url"] }}">Play</a>
|
||||
|
||||
@ -25,7 +25,6 @@
|
||||
document["enable_button"].value = "0"
|
||||
document["enable_button"].text = "Disable All"
|
||||
|
||||
|
||||
@bind("#chanSubmit", "submit")
|
||||
def submit_fixup(evt):
|
||||
for element in document.get(selector='input[type="checkbox"]'):
|
||||
@ -53,7 +52,7 @@
|
||||
postForm = document.createElement('form')
|
||||
postData = document.createElement('input')
|
||||
postForm.method = "POST"
|
||||
postForm.action = "/api/channels?method=modify&redirect=%2Fchannels_editor"
|
||||
postForm.action = "/api/channels?method=modify&redirect=/channels_editor"
|
||||
postForm.setRequestHeader = "('Content-Type', 'application/json')"
|
||||
postData.name = "channels"
|
||||
postData.value = chanlist
|
||||
@ -95,7 +94,8 @@
|
||||
{% for chan_dict in channelslist %}
|
||||
<tr>
|
||||
<td><input type="hidden" name="id" class="channels" value={{ chan_dict["id"] }}>
|
||||
<input type="text" class="channels" name="name" value="{{ chan_dict["name"] }}"></td>
|
||||
<input type="text" class="channels" name="name" value="{{ chan_dict["name"] }}">
|
||||
</td>
|
||||
<td><input type="text" class="channels" name="callsign" value="{{ chan_dict["callsign"] }}"></td>
|
||||
<td><input type="text" class="channels" name="number" value="{{ chan_dict["number"] }}"></td>
|
||||
<td><input type="text" class="channels" name="thumbnail" value="{{ chan_dict["thumbnail"] }}"></td>
|
||||
@ -110,7 +110,7 @@
|
||||
<td><input type="checkbox" class="channels" name="favorite" value=1 ></td>
|
||||
{% endif %}
|
||||
<td>
|
||||
<form method="post" action="/api/channels?method=update&redirect=%2Fchannels_editor">
|
||||
<form method="post" action="/api/channels?method=update&redirect=/channels_editor">
|
||||
<input type="hidden" class="reset" name="id" value="{{ chan_dict["id"] }}">
|
||||
<input type="hidden" class="reset" name="name" value="{{ chan_dict["origin_name"] }}">
|
||||
<input type="hidden" class="reset" name="callsign" value="{{ chan_dict["origin_callsign"] }}">
|
||||
@ -121,7 +121,6 @@
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@ -8,16 +8,15 @@
|
||||
{% else %}
|
||||
|
||||
<div style="text-align: center;">
|
||||
<button onclick="OpenLink('/api/cluster?method=scan&redirect=%2Fcluster')">Force Scan</a></button>
|
||||
<button onclick="OpenLink('/api/cluster?method=alive&redirect=%2Fcluster')">Send Alive</a></button>
|
||||
<button onclick="OpenLink('/api/cluster?method=disconnect&redirect=%2Fcluster')">Disconnect</a></button>
|
||||
<button onclick="location.href='/api/cluster?method=scan&redirect=/cluster'" type="button">Force Scan</button>
|
||||
<button onclick="location.href='/api/cluster?method=alive&redirect=/cluster'" type="button">Send Alive</button>
|
||||
<button onclick="location.href='/api/cluster?method=disconnect&redirect=/cluster'" type="button">Disconnect</button>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="container">
|
||||
<table class="table-medium center action-col">
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Location</th>
|
||||
@ -32,15 +31,13 @@
|
||||
<td>{{ location["joined"] }}</td>
|
||||
<td>
|
||||
{% if location["joined"] in ["True", "False"] %}
|
||||
<button onclick="OpenLink('{{ location["location"] }}')">Visit</a></button>
|
||||
<button onclick="location.href='{{ location["location"] }}'" type="button">Visit</button>
|
||||
{% endif %}
|
||||
|
||||
{% if location["joined"] == "True" %}
|
||||
<button onclick="OpenLink('/api/cluster?method=del&location={{ location["url_query"] }}&redirect=%2Fcluster')">Remove</a></button>
|
||||
<button onclick="location.href='/api/cluster?method=del&location={{ location["url_query"] }}&redirect=/cluster'" type="button">Remove</button>
|
||||
{% elif location["joined"] == "False" %}
|
||||
<button onclick="OpenLink('/api/cluster?method=add&location={{ location["url_query"] }}&redirect=%2Fcluster')">Add</a></button>
|
||||
<button onclick="location.href='/api/cluster?method=add&location={{ location["url_query"] }}&redirect=/cluster'" type="button">Add</button>
|
||||
{% endif %}
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
@ -16,13 +16,10 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
{% for button_item in button_dict[route_group] %}
|
||||
|
||||
<tr>
|
||||
<td><button onclick="OpenLink('{{ button_item["link"] }}')">{{ button_item["label"] }}</a></button></td>
|
||||
<td><button onclick="location.href='{{ button_item["link"] }}'" type="button">{{ button_item["label"] }}</button></td>
|
||||
</tr>
|
||||
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
<p>
|
||||
{% for epg_method in epg_methods %}
|
||||
<button onclick="OpenLink('/guide?source={{ epg_method }}')">{{ epg_method }}</a></button>
|
||||
<button onclick="location.href='/guide?source={{ epg_method }}'" type="button">{{ epg_method }}</button>
|
||||
{% endfor %}
|
||||
</p>
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<h4 style="text-align: center;">fHDHR Status</h4>
|
||||
|
||||
|
||||
<td class="container">
|
||||
<div class="container">
|
||||
<table class="table-medium center">
|
||||
<tbody>
|
||||
|
||||
|
||||
@ -7,7 +7,8 @@
|
||||
<h4 style="text-align: center;">Some Settings will require a manual restart.</h4>
|
||||
|
||||
<div style="text-align: center;">
|
||||
<button onclick="OpenLink('/api/settings?method=restart&instance_id={{ session["instance_id"] }}&redirect=%2Fsettings')">Restart fHDHR</a></button><p> Note: This may take some time, and you will have to refresh your page.</p>
|
||||
<button onclick="location.href='/api/settings?method=restart&redirect=/settings'" type="button">Restart fHDHR</button>
|
||||
<p> Note: This may take some time, and you will have to refresh your page.</p>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
@ -32,14 +33,11 @@
|
||||
<tbody>
|
||||
|
||||
{% for config_item in list(web_settings_dict[config_section].keys()) %}
|
||||
|
||||
<tr>
|
||||
<td>{{ config_item }}</td>
|
||||
|
||||
<td>{{ web_settings_dict[config_section][config_item]["value_default"] }}</td>
|
||||
|
||||
<td>
|
||||
<form method="post" action="/api/settings?method=update&redirect=%2Fsettings">
|
||||
<form method="post" action="/api/settings?method=update&redirect=/settings">
|
||||
<input type="hidden" name="config_section" value="{{ config_section }}">
|
||||
<input type="hidden" name="config_name" value="{{ config_item }}">
|
||||
<input type="hidden" name="config_default" value="{{ web_settings_dict[config_section][config_item]["value_default"] }}">
|
||||
@ -62,9 +60,7 @@
|
||||
<input type="submit" value="Reset">
|
||||
</form>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
|
||||
<h4 style="text-align: center;">{{ fhdhr.config.dict["fhdhr"]["friendlyname"] }} Tools</h4>
|
||||
|
||||
<form method="post" action="/api/tools?method=prettyjson&redirect=%2Ftools">
|
||||
<form method="post" action="/api/tools?method=prettyjson&redirect=/tools">
|
||||
<a data-th="URL"><input type="text" name="url" value=""></a>
|
||||
<a data-th="Convert Json url to tabbbed"><input type="submit" value="Convert Json url to tabbbed"></a>
|
||||
</form>
|
||||
|
||||
@ -37,10 +37,10 @@
|
||||
{% endif %}
|
||||
<td>
|
||||
{% if tuner_dict["status"] != "Inactive" %}
|
||||
<button onclick="OpenLink('/api/tuners?method=close&tuner={{ tuner_dict["number"] }}&redirect=%2Ftuners')">Close</a></button>
|
||||
<button onclick="location.href='/api/tuners?method=close&tuner={{ tuner_dict["number"] }}&redirect=/tuners'" type="button">Close</button>
|
||||
{% endif %}
|
||||
{% if not tuner_scanning and tuner_dict["status"] == "Inactive" %}
|
||||
<button onclick="OpenLink('/api/tuners?method=scan&tuner={{ tuner_dict["number"] }}&redirect=%2Ftuners')">Channel Scan</a></button>
|
||||
<button onclick="location.href='/api/tuners?method=scan&tuner={{ tuner_dict["number"] }}&redirect=/tuners'" type="button">Channel Scan</button>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -8,7 +8,6 @@
|
||||
<div class="container">
|
||||
<table class="table-medium center">
|
||||
<tbody>
|
||||
|
||||
{% for key in list(version_dict.keys()) %}
|
||||
<tr>
|
||||
<td>{{ key }}</td>
|
||||
|
||||
@ -20,23 +20,18 @@
|
||||
{% if epg_method == "origin" %}
|
||||
{% set epg_method_name = fhdhr.config.dict["main"]["dictpopname"] %}
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<td> {{ epg_method_name }}</td>
|
||||
<td><a href="/api/xmltv?method=get&source={{ epg_method }}">{{ epg_method_name }}</a></td>
|
||||
<td><a href="/api/epg?method=get&source={{ epg_method }}">{{ epg_method_name }}</a></td>
|
||||
|
||||
<td>
|
||||
<button onclick="OpenLink('/api/xmltv?method=update&source={{ epg_method }}&redirect=%2Fxmltv')">Update</a></button>
|
||||
<button onclick="OpenLink('/api/xmltv?method=clearcache&source={{ epg_method }}&redirect=%2Fxmltv')">Clear Cache</a></button>
|
||||
<button onclick="location.href='/api/xmltv?method=update&source={{ epg_method }}&redirect=/xmltv'" type="button">Update</button>
|
||||
<button onclick="location.href='/api/xmltv?method=clearcache&source={{ epg_method }}&redirect=/xmltv'" type="button">Clear Cache</button>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% endfor %}
|
||||
</body>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
table {border: 1px solid black;}
|
||||
th {border: 1px solid black;}
|
||||
td {border: 1px solid black;}
|
||||
|
||||
.pull-right { float: right; }
|
||||
|
||||
.pull-left { float: left; }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user