1
0
mirror of https://github.com/fHDHR/fHDHR_NextPVR.git synced 2025-12-06 05:26:57 -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)
elif method == "modify":
channels_list = eval(request.form.get('channels', []))
channels_list = json.loads(request.form.get('channels', []))
for channel in channels_list:
updatedict = {}
for key in list(channel.keys()):

View File

@ -1,18 +1,85 @@
from browser import document, bind # alert, window
import json
@bind("#enable_button", "click")
def enable_all(event):
for element in document.get(selector='input[type="checkbox"]'):
if element.name.endswith("enabled"):
if document["enable_button"].value == "0":
element.checked = False
element.value = False
def chan_edit_data(items, channel_id):
chanlist = []
chandict = {}
for element in items:
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:
element.checked = True
element.value = True
save_val = int(element.checked)
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"].text = "Enable All"
else:
@ -20,41 +87,17 @@ def enable_all(event):
document["enable_button"].text = "Disable All"
@bind("#chanSubmit", "submit")
def submit_fixup(evt):
@bind("#Chan_Edit_Favorite_Toggle", "click")
def chan_edit_favorite(event):
enable_bool = bool(int(document["favorite_button"].value))
for element in document.get(selector='input[type="checkbox"]'):
if element.name.endswith("enabled"):
if element.checked is False:
element.checked = True
element.value = False
if element.name.endswith("favorite"):
if element.checked is False:
element.checked = True
element.value = 0
if element.name == "favorite":
element.checked = enable_bool
element.value = int(enable_bool)
items = document.select(".channels")
chanlist = []
chandict = {}
for element in items:
if element.name == "id":
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()
if not enable_bool:
document["favorite_button"].value = "1"
document["favorite_button"].text = "Favorite All"
else:
document["favorite_button"].value = "0"
document["favorite_button"].text = "Unfavorite All"

View File

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