Add web interface for Channel.set_name.

This commit is contained in:
voussoir 2021-10-26 11:53:49 -07:00
parent 199f2030f7
commit 2d2a45a2a1
No known key found for this signature in database
GPG key ID: 5F7554F8C26DACCB
3 changed files with 61 additions and 1 deletions

View file

@ -191,6 +191,17 @@ def post_set_download_directory(channel_id):
response = {'download_directory': abspath} response = {'download_directory': abspath}
return flasktools.json_response(response) return flasktools.json_response(response)
@flasktools.required_fields(['name'], forbid_whitespace=False)
@site.route('/channel/<channel_id>/set_name', methods=['POST'])
def post_set_name(channel_id):
name = request.form['name']
channel = common.ycdldb.get_channel(channel_id)
channel.set_name(name, commit=True)
response = {'name': channel.name}
return flasktools.json_response(response)
@site.route('/channel/<channel_id>/set_queuefile_extension', methods=['POST']) @site.route('/channel/<channel_id>/set_queuefile_extension', methods=['POST'])
def post_set_queuefile_extension(channel_id): def post_set_queuefile_extension(channel_id):
extension = request.form['extension'] extension = request.form['extension']

View file

@ -59,6 +59,14 @@ function set_download_directory(channel_id, download_directory, callback)
return common.post(url, data, callback); return common.post(url, data, callback);
} }
api.channels.set_name =
function set_name(channel_id, name, callback)
{
const url = `/channel/${channel_id}/set_name`;
const data = {"name": name};
return common.post(url, data, callback);
}
api.channels.set_queuefile_extension = api.channels.set_queuefile_extension =
function set_queuefile_extension(channel_id, extension, callback) function set_queuefile_extension(channel_id, extension, callback)
{ {

View file

@ -162,7 +162,7 @@ https://stackoverflow.com/a/35153397
{{header.make_header()}} {{header.make_header()}}
<div id="content_body"> <div id="content_body">
{% if channel is not none %} {% if channel is not none %}
<h2>{{channel.name}}</h2> <h1 id="channel_name">{{channel.name}}</h1>
{% endif %} {% endif %}
{% if channel is not none %} {% if channel is not none %}
@ -261,6 +261,11 @@ https://stackoverflow.com/a/35153397
<div class="tab" data-tab-title="Settings"> <div class="tab" data-tab-title="Settings">
<div>Channel ID: <code>{{channel.id}}</code></div> <div>Channel ID: <code>{{channel.id}}</code></div>
<div>
<input type="text" id="set_name_input" placeholder="Name" value="{{channel.name or ''}}"/>
<button id="set_name_button" class="button_with_spinner" onclick="return set_name_form();">Set name</button>
</div>
<div> <div>
<label><input type="checkbox" id="set_autorefresh_checkbox" {{"checked" if channel.autorefresh else ""}} onchange="return set_autorefresh_form(event);"/> Automatically refresh this channel regularly.</label> <label><input type="checkbox" id="set_autorefresh_checkbox" {{"checked" if channel.autorefresh else ""}} onchange="return set_autorefresh_form(event);"/> Automatically refresh this channel regularly.</label>
<span id="set_autorefresh_spinner" class="hidden">Working...</span> <span id="set_autorefresh_spinner" class="hidden">Working...</span>
@ -666,6 +671,38 @@ function set_download_directory_callback(response)
} }
} }
function set_name_form(event)
{
const name = set_name_input.value.trim();
api.channels.set_name(CHANNEL_ID, name, set_name_callback);
}
function set_name_callback(response)
{
window[set_name_button.dataset.spinnerCloser]();
if (response.meta.status != 200 || ! response.meta.json_ok)
{
alert(JSON.stringify(response));
return;
}
const name = response.data.name;
const h1 = document.getElementById("channel_name");
if (name === null)
{
set_name_input.value = "";
h1.innerText = CHANNEL_ID;
document.title = CHANNEL_ID;
}
else
{
set_name_input.value = name;
h1.innerText = name;
document.title = name;
}
}
function set_queuefile_extension_form(event) function set_queuefile_extension_form(event)
{ {
const extension = set_queuefile_extension_input.value.trim(); const extension = set_queuefile_extension_input.value.trim();
@ -695,6 +732,10 @@ function set_queuefile_extension_callback(response)
if (CHANNEL_ID) if (CHANNEL_ID)
{ {
var set_name_input = document.getElementById("set_name_input");
var set_name_button = document.getElementById("set_name_button");
common.bind_box_to_button(set_name_input, set_name_button);
var set_queuefile_extension_input = document.getElementById("set_queuefile_extension_input"); var set_queuefile_extension_input = document.getElementById("set_queuefile_extension_input");
var set_queuefile_extension_button = document.getElementById("set_queuefile_extension_button"); var set_queuefile_extension_button = document.getElementById("set_queuefile_extension_button");
common.bind_box_to_button(set_queuefile_extension_input, set_queuefile_extension_button); common.bind_box_to_button(set_queuefile_extension_input, set_queuefile_extension_button);