bazarr/views/settingssonarr.html

397 lines
17 KiB
HTML
Raw Normal View History

2020-03-18 12:22:22 +00:00
{% extends '_main.html' %}
2019-12-16 13:58:10 +00:00
2020-03-18 12:22:22 +00:00
{% block title %}Sonarr - Bazarr{% endblock %}
2019-12-16 13:58:10 +00:00
2020-03-18 12:22:22 +00:00
{% block page_head %}
2019-12-16 13:58:10 +00:00
2020-03-18 12:22:22 +00:00
{% endblock page_head %}
{% block bcleft %}
<div class="">
<button class="btn btn-outline" id="save_button">
<div>
<span class="fa-stack">
<i class="fas fa-save fa-stack-2x align-top text-themecolor text-center font-20" aria-hidden="true"></i>
<i id="save_button_checkmark" class="fas fa-check fa-stack-2x" style="color:green;"></i>
</span>
2019-12-16 13:58:10 +00:00
</div>
2020-03-18 12:22:22 +00:00
<div class="align-bottom text-themecolor small text-center">Save</div>
</button>
</div>
{% endblock bcleft %}
{% block bcright %}
{% endblock bcright %}
{% block body %}
<div class="container-fluid" style="padding-top: 3em;">
<form class="form" name="settings_form" id="settings_form">
<h4>Use Sonarr</h4>
<hr/>
<div class="row">
2020-04-23 00:07:21 +00:00
<div class="col-sm-3 text-right">
2020-03-18 12:22:22 +00:00
<b>Enabled</b>
2019-12-16 13:58:10 +00:00
</div>
2020-03-18 12:22:22 +00:00
<div class="form-group col-sm-1">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="settings-general-use_sonarr" name="settings-general-use_sonarr">
<span class="custom-control-label" for="settings-general-use_sonarr"></span>
</label>
2019-12-16 13:58:10 +00:00
</div>
</div>
2020-03-18 12:22:22 +00:00
<br>
2019-12-16 13:58:10 +00:00
2020-03-18 12:22:22 +00:00
<div id="sonarr_div">
<h4>Host</h4>
<hr/>
<div class="row">
2020-04-23 00:07:21 +00:00
<div class="col-sm-3 text-right">
2020-03-18 12:22:22 +00:00
<b>Hostname or IP Address</b>
</div>
<div class="col-sm-4">
<input type="text" class="form-control" id="settings-sonarr-ip" name="settings-sonarr-ip" value="{{settings.sonarr.ip}}">
</div>
2019-12-16 13:58:10 +00:00
</div>
2020-03-18 12:22:22 +00:00
<br>
<div class="row">
2020-04-23 00:07:21 +00:00
<div class="col-sm-3 text-right">
2020-03-18 12:22:22 +00:00
<b>Port Number</b>
</div>
<div class="col-sm-4">
<input type="text" class="form-control" id="settings-sonarr-port" name="settings-sonarr-port" value="{{settings.sonarr.port}}">
2019-12-16 13:58:10 +00:00
</div>
</div>
2020-03-18 12:22:22 +00:00
<br>
<div class="row">
2020-04-23 00:07:21 +00:00
<div class="col-sm-3 text-right">
2020-03-18 12:22:22 +00:00
<b>URL Base</b>
</div>
<div class="col-sm-4">
<input type="text" class="form-control" id="settings-sonarr-base_url" name="settings-sonarr-base_url" value="{{settings.sonarr.base_url}}">
</div>
2019-12-16 13:58:10 +00:00
</div>
2020-03-18 12:22:22 +00:00
<br>
<div class="row">
2020-04-23 00:07:21 +00:00
<div class="col-sm-3 text-right">
2020-03-18 12:22:22 +00:00
<b>SSL Enabled</b>
</div>
<div class="form-group col-sm-1">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="settings-sonarr-ssl" name="settings-sonarr-ssl">
<span class="custom-control-label" for="settings-sonarr-ssl"></span>
</label>
</div>
2019-12-16 13:58:10 +00:00
</div>
2020-03-18 12:22:22 +00:00
<div class="row">
2020-04-23 00:07:21 +00:00
<div class="col-sm-3 text-right">
2020-03-18 12:22:22 +00:00
<b>API Key</b>
</div>
<div class="col-sm-4">
<input type="text" class="form-control" id="settings-sonarr-apikey" name="settings-sonarr-apikey" value="{{settings.sonarr.apikey}}">
2019-12-16 13:58:10 +00:00
</div>
</div>
2020-03-18 12:22:22 +00:00
<br>
2020-03-21 13:24:32 +00:00
<div class="row">
2020-04-23 00:07:21 +00:00
<div class="col-sm-3 text-right">
2020-03-21 13:24:32 +00:00
<button type="button" class="btn btn-secondary" id="test_sonarr_connection">Test</button>
</div>
<div class="col-sm-4">
<span id="test_sonarr_span"></span>
</div>
</div>
<br>
2020-03-18 12:22:22 +00:00
<h4>Options</h4>
<hr/>
<div class="row">
2020-04-23 00:07:21 +00:00
<div class="col-sm-3 text-right">
2020-03-18 12:22:22 +00:00
<b>Minimum Score</b>
</div>
<div class="col-sm-1">
<input type="number" min="0" max="100" step="1" onkeydown="return false" class="form-control" id="settings-general-minimum_score" name="settings-general-minimum_score" value="{{settings.general.minimum_score}}">
</div>
2019-12-16 13:58:10 +00:00
</div>
2020-03-18 12:22:22 +00:00
<br>
<div class="row">
2020-04-23 00:07:21 +00:00
<div class="col-sm-3 text-right">
2020-03-18 12:22:22 +00:00
<b>Download Only Monitored</b>
</div>
<div class="form-group col-sm-1">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="settings-sonarr-only_monitored" name="settings-sonarr-only_monitored">
<span class="custom-control-label" for="settings-sonarr-only_monitored"></span>
</label>
</div>
2019-12-16 13:58:10 +00:00
</div>
2020-03-18 12:22:22 +00:00
<br>
2020-03-21 13:24:32 +00:00
<h4>Path Mappings</h4>
2020-03-18 12:22:22 +00:00
<hr/>
<div class="row">
2020-03-21 13:24:32 +00:00
<div class="col-sm-8">
<table class="table table-striped" id="path_mapping" style="width:100%;">
2020-03-18 12:22:22 +00:00
2020-03-21 13:24:32 +00:00
</table>
</div>
2019-12-16 13:58:10 +00:00
</div>
2020-03-18 12:22:22 +00:00
<br>
2019-12-16 13:58:10 +00:00
</div>
2020-03-18 12:22:22 +00:00
</form>
2019-12-16 13:58:10 +00:00
</div>
2020-03-21 13:24:32 +00:00
<div id="addModal" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Add Path Mapping</h5><br>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<form class="form" name="add_form" id="add_form">
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 text-right">
Path for Sonarr
</div>
<div class="col-sm-8">
<input type="text" class="form-control" id="add_path_sonarr" name="add_path_sonarr" value="">
</div>
</div>
<br>
<div class="row">
<div class="col-sm-3 text-right">
Path for Bazarr
</div>
<div class="col-sm-8">
<input type="text" class="form-control" id="add_path_bazarr" name="add_path_bazarr" value="">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" id="add_save_button" class="btn btn-info">Save</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
</div>
</form>
</div>
</div>
</div>
<div id="editModal" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Edit Path Mapping</h5><br>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<form class="form" name="edit_form" id="edit_form">
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 text-right">
Path for Sonarr
</div>
<div class="col-sm-8">
<input type="text" class="form-control" id="edit_path_sonarr" name="edit_path_sonarr" value="">
</div>
</div>
<br>
<div class="row">
<div class="col-sm-3 text-right">
Path for Bazarr
</div>
<div class="col-sm-8">
<input type="text" class="form-control" id="edit_path_bazarr" name="edit_path_bazarr" value="">
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" id="edit_save_button" class="btn btn-info">Save</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
</div>
</form>
</div>
</div>
</div>
<div id="deleteModal" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Delete Path Mapping</h5><br>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Are you sure you want to delete this path mapping?
</div>
<div class="modal-footer">
<button type="submit" id="delete_yes_button" class="btn btn-info">Yes</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
2020-03-18 12:22:22 +00:00
{% endblock body %}
{% block tail %}
<script>
$(document).ready(function () {
2020-05-02 13:15:25 +00:00
// Show warning if there's unsaved changes in the settings_form
var form_changed = false;
$(window).on('beforeunload', function() {
if (form_changed) {
return "";
}
});
2020-03-18 12:22:22 +00:00
// Hide checkmark over save button
$('#save_button_checkmark').hide();
// Hide *_div on Select input changed to None
$('#settings-general-use_sonarr').on('change', function() {
if ($(this).prop('checked')) {
$('#sonarr_div').show();
} else {
$('#sonarr_div').hide();
}
});
// Set Checkbox input values
2020-04-23 02:29:59 +00:00
$('#settings-general-use_sonarr').prop('checked', {{'true' if settings.general.getboolean('use_sonarr') else 'false'}}).trigger('change');
$('#settings-sonarr-ssl').prop('checked', {{'true' if settings.sonarr.getboolean('ssl') else 'false'}});
$('#settings-sonarr-only_monitored').prop('checked', {{'true' if settings.sonarr.getboolean('only_monitored') else 'false'}});
2020-03-18 12:22:22 +00:00
$('#save_button').on('click', function() {
var formdata = new FormData(document.getElementById("settings_form"));
// Make sure all checkbox input are sent with true/false value
$('input[type=checkbox]').each(function () {
formdata.set($(this).prop('id'), $(this).prop('checked'));
});
2020-03-21 13:24:32 +00:00
formdata.append('settings-general-path_mappings', JSON.stringify(table.rows().data().toArray()));
2020-03-18 12:22:22 +00:00
$.ajax({
url: "{{ url_for('api.savesettings') }}",
data: formdata,
processData: false,
contentType: false,
type: 'POST',
complete: function () {
$('#save_button_checkmark').show();
2020-05-02 13:15:25 +00:00
form_changed = false;
2020-03-18 12:22:22 +00:00
setTimeout(
function()
{
$('#save_button_checkmark').hide();
}, 2000);
}
});
});
2020-03-21 13:24:32 +00:00
var path_mapping = jQuery.makeArray({{ settings.general.path_mappings|safe }})
path_mapping = $.grep(path_mapping, function(v) {
return v[0] !== "" || v[1] !== "";
});
var table = $('#path_mapping').DataTable({
data: path_mapping,
2020-03-18 12:22:22 +00:00
columns: [{
2020-03-21 13:24:32 +00:00
title: "Path for Sonarr",
type: "text"
},
{
title: "Path for Bazarr",
type: "text"
}],
dom: 'Bfrtip',
select: {
style: 'single'
},
language: {
zeroRecords: 'No Path Mappings'
},
searching: false,
ordering: false,
lengthChange: true,
2020-03-18 12:22:22 +00:00
responsive: true,
2020-03-21 13:24:32 +00:00
paging: false,
info: false,
2020-03-18 12:22:22 +00:00
buttons: [{
text: 'Add',
2020-03-21 13:24:32 +00:00
action: function () {
$('#addModal').modal('show');
}
2020-03-18 12:22:22 +00:00
},
{
2020-03-21 13:24:32 +00:00
extend: 'selected',
2020-03-18 12:22:22 +00:00
text: 'Edit',
2020-03-21 13:24:32 +00:00
action: function () {
$('#edit_path_sonarr').val(table.row( { selected: true } ).data()[0]);
$('#edit_path_bazarr').val(table.row( { selected: true } ).data()[1]);
$('#editModal').modal('show');
}
2020-03-18 12:22:22 +00:00
},
{
2020-03-21 13:24:32 +00:00
extend: 'selected',
2020-03-18 12:22:22 +00:00
text: 'Delete',
2020-03-21 13:24:32 +00:00
action: function () {
$('#deleteModal').modal('show');
}
2020-03-18 12:22:22 +00:00
}]
});
2020-03-21 13:24:32 +00:00
$('#add_save_button').on('click', function(e) {
e.preventDefault();
table.row.add([ $('#add_path_sonarr').val(), $('#add_path_bazarr').val()]).draw();
$('#add_path_sonarr').val('');
$('#add_path_bazarr').val('');
$('#addModal').modal('hide');
});
$('#edit_save_button').on('click', function(e) {
e.preventDefault();
table.row( { selected: true } ).data([ $('#edit_path_sonarr').val(), $('#edit_path_bazarr').val()]);
$('#editModal').modal('hide');
});
$('#delete_yes_button').on('click', function(e) {
e.preventDefault();
table.row( { selected: true } ).remove().draw();
$('#deleteModal').modal('hide');
});
$('#test_sonarr_connection').on('click', function() {
2020-05-03 02:41:03 +00:00
$('#test_sonarr_span').html('<div class="spinner-border" role="status"><span class="sr-only">Loading...</span></div>');
2020-03-21 13:24:32 +00:00
if ($('#settings-sonarr-ssl').is(':checked')) {
var protocol = 'https';
} else {
var protocol = 'http';
}
var sonarr_url = $('#settings-sonarr-ip').val() + ":" + $('#settings-sonarr-port').val() + $('#settings-sonarr-base_url').val().replace(/\/$/, "") + "/api/system/status?apikey=" + $('#settings-sonarr-apikey').val();
$.getJSON("{{ url_for('test_url') }}/" + protocol + "/" + encodeURIComponent(sonarr_url), function (data) {
if (data.status) {
$('#test_sonarr_span').text('Test Successful: Sonarr v' + data.version).css('color', 'green');
} else {
2020-05-03 02:41:03 +00:00
console.log(data);
$('#test_sonarr_span').text('Test Failed: ' + data.error).css('color', 'red');
2020-03-21 13:24:32 +00:00
}
});
});
2020-05-02 13:15:25 +00:00
// monitor changes to the settings_form
$('#settings_form').on('change', function() {
form_changed = true;
})
2019-12-16 13:58:10 +00:00
});
2020-03-18 12:22:22 +00:00
</script>
{% endblock tail %}