1
0
mirror of https://github.com/fHDHR/fHDHR_NextPVR.git synced 2025-12-06 10:16:58 -05:00

Enhance Channel Editor

This commit is contained in:
deathbybandaid 2021-01-14 09:33:36 -05:00
parent 28383d89ec
commit 56d7a74ee4
3 changed files with 147 additions and 71 deletions

View File

@ -114,7 +114,7 @@ class Channels():
self.fhdhr.device.channels.set_channel_status("id", channel_id, updatedict) self.fhdhr.device.channels.set_channel_status("id", channel_id, updatedict)
elif method == "modify": elif method == "modify":
channels_list = eval(request.form.get('channels', [])) channels_list = json.loads(request.form.get('channels', []))
for channel in channels_list: for channel in channels_list:
updatedict = {} updatedict = {}
for key in list(channel.keys()): for key in list(channel.keys()):

View File

@ -1,18 +1,85 @@
from browser import document, bind # alert, window from browser import document, bind # alert, window
import json
@bind("#enable_button", "click") def chan_edit_data(items, channel_id):
def enable_all(event):
for element in document.get(selector='input[type="checkbox"]'): chanlist = []
if element.name.endswith("enabled"): chandict = {}
if document["enable_button"].value == "0":
element.checked = False for element in items:
element.value = False if element.name == "id":
if len(chandict.keys()) >= 2 and "id" in list(chandict.keys()):
chanlist.append(chandict)
chandict = {"id": element.value}
if element.type == "checkbox":
if element.name in ["enabled"]:
save_val = element.checked
else: else:
element.checked = True save_val = int(element.checked)
element.value = True else:
save_val = element.value
if element.name != "id":
cur_value = element.placeholder
if element.type == "checkbox":
if element.name in ["enabled"]:
cur_value = element.placeholder
else:
cur_value = int(element.placeholder)
if str(save_val) != str(cur_value):
chandict[element.name] = save_val
if document["enable_button"].value == "0": if channel_id != "all":
chanlist == [x for x in chanlist if x["id"] == channel_id]
return chanlist
def chan_edit_postform(chanlist):
postForm = document.createElement('form')
postForm.method = "POST"
postForm.action = "/api/channels?method=modify&redirect=/channels_editor"
postForm.setRequestHeader = "('Content-Type', 'application/json')"
postData = document.createElement('input')
postData.type = 'hidden'
postData.name = "channels"
postData.value = json.dumps(chanlist)
postForm.appendChild(postData)
document.body.appendChild(postForm)
return postForm
@bind("#Chan_Edit_Reset", "submit")
def chan_edit_reset(evt):
chanlist = chan_edit_data(
document.select(".reset"),
str(evt.currentTarget.children[0].id).replace("reset_", ""))
postForm = chan_edit_postform(chanlist)
postForm.submit()
evt.preventDefault()
@bind("#Chan_Edit_Modify", "submit")
def chan_edit_modify(evt):
chanlist = chan_edit_data(
document.select(".channels"),
str(evt.currentTarget.children[0].id).replace("update_", ""))
postForm = chan_edit_postform(chanlist)
postForm.submit()
evt.preventDefault()
@bind("#Chan_Edit_Enable_Toggle", "click")
def chan_edit_enable(event):
enable_bool = bool(int(document["enable_button"].value))
for element in document.get(selector='input[type="checkbox"]'):
if element.name == "enabled":
element.checked = enable_bool
element.value = enable_bool
if not enable_bool:
document["enable_button"].value = "1" document["enable_button"].value = "1"
document["enable_button"].text = "Enable All" document["enable_button"].text = "Enable All"
else: else:
@ -20,41 +87,17 @@ def enable_all(event):
document["enable_button"].text = "Disable All" document["enable_button"].text = "Disable All"
@bind("#chanSubmit", "submit") @bind("#Chan_Edit_Favorite_Toggle", "click")
def submit_fixup(evt): def chan_edit_favorite(event):
enable_bool = bool(int(document["favorite_button"].value))
for element in document.get(selector='input[type="checkbox"]'): for element in document.get(selector='input[type="checkbox"]'):
if element.name.endswith("enabled"): if element.name == "favorite":
if element.checked is False: element.checked = enable_bool
element.checked = True element.value = int(enable_bool)
element.value = False
if element.name.endswith("favorite"):
if element.checked is False:
element.checked = True
element.value = 0
items = document.select(".channels") if not enable_bool:
chanlist = [] document["favorite_button"].value = "1"
chandict = {} document["favorite_button"].text = "Favorite All"
else:
for element in items: document["favorite_button"].value = "0"
if element.name == "id": document["favorite_button"].text = "Unfavorite All"
if len(chandict.keys()):
chanlist.append(chandict)
chandict = {}
chandict[element.name] = element.value
element.clear()
postForm = document.createElement('form')
postData = document.createElement('input')
postForm.method = "POST"
postForm.action = "/api/channels?method=modify&redirect=/channels_editor"
postForm.setRequestHeader = "('Content-Type', 'application/json')"
postData.name = "channels"
postData.value = chanlist
postForm.appendChild(postData)
document.body.appendChild(postForm)
postForm.submit()
evt.preventDefault()

View File

@ -4,13 +4,33 @@
<h4 style="text-align: center;">{{ fhdhr.config.dict["fhdhr"]["friendlyname"] }} Channels Editor</h4> <h4 style="text-align: center;">{{ fhdhr.config.dict["fhdhr"]["friendlyname"] }} Channels Editor</h4>
<div style="text-align: center;"> <div class="container">
<form id="chanSubmit" method="post"> <table class="table-medium center">
<button type="Submit" id="modify_button" value="0">Modify All</button> <tbody>
<button type="button" id="enable_button" value="0">Disable All</button> <tr>
</form> <td>
</div> <form id="Chan_Edit_Enable_Toggle" method="post">
<button type="button" id="enable_button" value="0">Disable All</button>
</form>
</td>
<td>
<form id="Chan_Edit_Favorite_Toggle" method="post">
<button type="button" id="favorite_button" value="0">Unfavorite All</button>
</form>
</td>
<td>
<form id="Chan_Edit_Modify" method="post">
<button type="Submit" id="modify_all">Modify All</button>
</form>
<form id="Chan_Edit_Reset" method="post">
<button type="Submit" id="reset_all">Reset All</button>
</form>
</td>
</tr>
</tbody>
</table>
</div>
<div class="container"> <div class="container">
<table class="table-scroll center text-edit-cols"> <table class="table-scroll center text-edit-cols">
@ -27,35 +47,48 @@
</thead> </thead>
<tbody class="body-half-screen"> <tbody class="body-half-screen">
{% for chan_dict in channelslist %} {% for chan_dict in channelslist %}
<tr> <tr>
<td><input type="hidden" name="id" class="channels" value={{ chan_dict["id"] }}> <input type="hidden" name="id" class="channels" value="{{ chan_dict["id"] }}">
<input type="text" class="channels" name="name" value="{{ chan_dict["name"] }}"> <input type="hidden" class="reset" name="id" value="{{ chan_dict["id"] }}">
</td>
<td><input type="text" class="channels" name="callsign" value="{{ chan_dict["callsign"] }}"></td> <td><input type="text" class="channels" name="name" value="{{ chan_dict["name"] }}" placeholder="{{ chan_dict["name"] }}"></td>
<td><input type="text" class="channels" name="number" value="{{ chan_dict["number"] }}"></td> <input type="hidden" class="reset" name="name" value="{{ chan_dict["origin_name"] }}" placeholder="{{ chan_dict["name"] }}">
<td><input type="text" class="channels" name="thumbnail" value="{{ chan_dict["thumbnail"] }}"></td>
<td><input type="text" class="channels" name="callsign" value="{{ chan_dict["callsign"] }}" placeholder="{{ chan_dict["callsign"] }}"></td>
<input type="hidden" class="reset" name="callsign" value="{{ chan_dict["origin_callsign"] }}" placeholder="{{ chan_dict["callsign"] }}">
<td><input type="text" class="channels" name="number" value="{{ chan_dict["number"] }}" placeholder="{{ chan_dict["number"] }}"></td>
<input type="hidden" class="reset" name="number" value="{{ chan_dict["origin_number"] }}" placeholder="{{ chan_dict["number"] }}">
<td><input type="text" class="channels" name="thumbnail" value="{{ chan_dict["thumbnail"] }}" placeholder="{{ chan_dict["thumbnail"] }}"></td>
<input type="hidden" class="reset" name="thumbnail" value="{{ chan_dict["origin_thumbnail"] }}" placeholder="{{ chan_dict["thumbnail"] }}">
{% if chan_dict["enabled"] %} {% if chan_dict["enabled"] %}
<td><input type="checkbox" class="channels" name="enabled" value=True checked></td> <td><input type="checkbox" class="channels" name="enabled" value=True checked placeholder="{{ chan_dict["enabled"] }}"></td>
{% else %} {% else %}
<td><input type="checkbox" class="channels" name="enabled" value=True ></td> <td><input type="checkbox" class="channels" name="enabled" value=True placeholder="{{ chan_dict["enabled"] }}"></td>
{% endif %} {% endif %}
<input type="hidden" class="reset" name="enabled" value=True placeholder="{{ chan_dict["enabled"] }}">
{% if chan_dict["favorite"] %} {% if chan_dict["favorite"] %}
<td><input type="checkbox" class="channels" name="favorite" value=1 checked></td> <td><input type="checkbox" class="channels" name="favorite" value=1 checked placeholder="{{ chan_dict["favorite"] }}"></td>
{% else %} {% else %}
<td><input type="checkbox" class="channels" name="favorite" value=1 ></td> <td><input type="checkbox" class="channels" name="favorite" value=1 placeholder="{{ chan_dict["favorite"] }}"></td>
{% endif %} {% endif %}
<input type="hidden" class="reset" name="favorite" value="0" placeholder="{{ chan_dict["favorite"] }}">
<td> <td>
<form method="post" action="/api/channels?method=update&redirect=/channels_editor"> <form id="Chan_Edit_Modify" method="post">
<input type="hidden" class="reset" name="id" value="{{ chan_dict["id"] }}"> <button type="Submit" id="modify_{{ chan_dict["id"] }}">Modify</button>
<input type="hidden" class="reset" name="name" value="{{ chan_dict["origin_name"] }}"> </form>
<input type="hidden" class="reset" name="callsign" value="{{ chan_dict["origin_callsign"] }}">
<input type="hidden" class="reset" name="number" value="{{ chan_dict["origin_number"] }}"> <form id="Chan_Edit_Reset" method="post">
<input type="hidden" class="reset" name="thumbnail" value="{{ chan_dict["origin_thumbnail"] }}"> <button type="Submit" id="reset_{{ chan_dict["id"] }}">Reset</button>
<input type="hidden" class="reset" name="enabled" value=True>
<input type="submit" value="Reset">
</form> </form>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>