You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
761 lines
40 KiB
761 lines
40 KiB
{% extends '_main.html' %}
|
|
|
|
{% block title %}Languages - Bazarr{% endblock %}
|
|
|
|
{% block page_head %}
|
|
<style>
|
|
.warning {
|
|
color: red;
|
|
}
|
|
|
|
table.dataTable tbody tr.selected a, table.dataTable tbody th.selected a, table.dataTable tbody td.selected a {
|
|
color: revert;
|
|
}
|
|
</style>
|
|
{% 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>
|
|
</div>
|
|
<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>Subtitles Languages</h4>
|
|
<hr/>
|
|
<div class="row">
|
|
<div class="col-sm-3 text-right">
|
|
<b>Single Language</b>
|
|
</div>
|
|
<div class="form-group col-sm-8">
|
|
<label class="custom-control custom-checkbox">
|
|
<input type="checkbox" class="custom-control-input" id="settings-general-single_language" name="settings-general-single_language">
|
|
<span class="custom-control-label" for="settings-general-single_language"></span>
|
|
</label>
|
|
<label>Download a single Subtitles file without adding the language code to the filename.</label>
|
|
<label class="warning">We don't recommend enabling this option unless absolutely required (ie: media player not supporting language code in subtitles filename). Results may vary.</label>
|
|
</div>
|
|
</div>
|
|
<br>
|
|
<div class="row">
|
|
<div class="col-sm-3 text-right">
|
|
<b>Languages Filter</b>
|
|
</div>
|
|
<div class="form-group col-sm-8 pl-sm-0">
|
|
<select class="selectpicker" id="enabled_languages" name="enabled_languages" data-live-search="true" multiple></select>
|
|
</div>
|
|
</div>
|
|
<br>
|
|
|
|
<h4>Languages Profiles</h4>
|
|
<hr/>
|
|
<div class="row">
|
|
<div class="col-sm-8">
|
|
<table class="table table-striped" id="languages_profiles" style="width:100%;">
|
|
<thead>
|
|
<tr>
|
|
<th>ID</th>
|
|
<th>Name</th>
|
|
<th>Cutoff</th>
|
|
<th>Languages</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<br>
|
|
|
|
<h4>Default Settings</h4>
|
|
<hr>
|
|
<div class="row">
|
|
<div class="col-sm-3 text-right">
|
|
<b>Series Default Settings</b>
|
|
</div>
|
|
<div class="form-group col-sm-8">
|
|
<label class="custom-control custom-checkbox">
|
|
<input type="checkbox" class="custom-control-input" id="settings-general-serie_default_enabled" name="settings-general-serie_default_enabled">
|
|
<span class="custom-control-label" for="settings-general-serie_default_enabled"></span>
|
|
</label>
|
|
<label>Apply only to Series added to Bazarr after enabling this option.</label>
|
|
</div>
|
|
</div>
|
|
<div id="series_default_div">
|
|
<div class="row">
|
|
<div class="col-sm-4 text-right">
|
|
<b>Languages Profile Id</b>
|
|
</div>
|
|
<div class="form-group col-sm-8 pl-sm-0">
|
|
<select class="selectpicker" id="settings-general-serie_default_profile" name="settings-general-serie_default_profile"></select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-3 text-right">
|
|
<b>Movies Default Settings</b>
|
|
</div>
|
|
<div class="form-group col-sm-8">
|
|
<label class="custom-control custom-checkbox">
|
|
<input type="checkbox" class="custom-control-input" id="settings-general-movie_default_enabled" name="settings-general-movie_default_enabled">
|
|
<span class="custom-control-label" for="settings-general-movie_default_enabled"></span>
|
|
</label>
|
|
<label>Apply only to Movies added to Bazarr after enabling this option.</label>
|
|
</div>
|
|
</div>
|
|
<div id="movies_default_div">
|
|
<div class="row">
|
|
<div class="col-sm-4 text-right">
|
|
<b>Languages Profile Id</b>
|
|
</div>
|
|
<div class="form-group col-sm-8 pl-sm-0">
|
|
<select class="selectpicker" id="settings-general-movie_default_profile" name="settings-general-movie_default_profile"></select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
<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 Languages Profile</h5><br>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</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">
|
|
Profile name
|
|
</div>
|
|
<div class="col-sm-8">
|
|
<input type="text" class="form-control" id="add_profile_name" name="add_profile_name" value="">
|
|
</div>
|
|
</div>
|
|
<br>
|
|
<div class="row">
|
|
<div class="col-sm-3 text-right">
|
|
Languages
|
|
</div>
|
|
<div class="col-sm-8">
|
|
<table class="table table-striped" id="add_languages_profiles" style="width:100%;">
|
|
<thead>
|
|
<tr>
|
|
<th></th>
|
|
<th>Id</th>
|
|
<th>Language</th>
|
|
<th>Forced Only</th>
|
|
<th>Hearing-Impaired Only</th>
|
|
<th>Ignore If Matching Audio Track</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<br>
|
|
<div class="row">
|
|
<div class="col-sm-3 text-right">
|
|
Language ID cutoff (ignore others if existing)
|
|
</div>
|
|
<div class="col-sm-8">
|
|
<select class="selectpicker show-tick" id="add_language_cutoff" name="add_language_cutoff">
|
|
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="submit" id="add_save_button" class="btn btn-info">Add</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 Languages Profile</h5><br>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</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">
|
|
Profile name
|
|
</div>
|
|
<div class="col-sm-8">
|
|
<input type="text" class="form-control" id="edit_profile_name" name="edit_profile_name" value="">
|
|
</div>
|
|
</div>
|
|
<br>
|
|
<div class="row">
|
|
<div class="col-sm-3 text-right">
|
|
Languages
|
|
</div>
|
|
<div class="col-sm-8">
|
|
<table class="table table-striped" id="edit_languages_profiles" style="width:100%;">
|
|
<thead>
|
|
<tr>
|
|
<th></th>
|
|
<th>Id</th>
|
|
<th>Language</th>
|
|
<th>Forced Only</th>
|
|
<th>Hearing-Impaired Only</th>
|
|
<th>Ignore If Matching Audio Track</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<br>
|
|
<div class="row">
|
|
<div class="col-sm-3 text-right">
|
|
Language ID cutoff (ignore others if existing)
|
|
</div>
|
|
<div class="col-sm-8">
|
|
<select class="selectpicker show-tick inline_select_edit" id="edit_language_cutoff" name="edit_language_cutoff">
|
|
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<input type="hidden" id="edit_profile_id" value="" />
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="submit" id="edit_save_button" class="btn btn-info">Edit</button>
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock body %}
|
|
|
|
{% block tail %}
|
|
<script>
|
|
$(document).ready(function () {
|
|
getLanguages();
|
|
|
|
// Show warning if there's unsaved changes in the settings_form
|
|
var form_changed = false;
|
|
$(window).on('beforeunload', function() {
|
|
if (form_changed) {
|
|
return "";
|
|
}
|
|
});
|
|
|
|
// Hide checkmark over save button
|
|
$('#save_button_checkmark').hide();
|
|
$('#save_button').prop('disabled', true).css('cursor', 'not-allowed');
|
|
|
|
// Set Select input values
|
|
$('#settings-general-serie_default_profile').val('{{settings.general.serie_default_profile}}').trigger('change');
|
|
$('#settings-general-movie_default_profile').val('{{settings.general.movie_default_profile}}').trigger('change');
|
|
$('.selectpicker').selectpicker('refresh')
|
|
|
|
// Set Checkbox input values
|
|
$('#settings-general-single_language').prop('checked', {{'true' if settings.general.getboolean('single_language') else 'false'}}).trigger('change');
|
|
$('#settings-general-serie_default_enabled').prop('checked', {{'true' if settings.general.getboolean('serie_default_enabled') else 'false'}}).trigger('change');
|
|
$('#settings-general-movie_default_enabled').prop('checked', {{'true' if settings.general.getboolean('movie_default_enabled') else 'false'}}).trigger('change');
|
|
|
|
var table = $('#languages_profiles').DataTable({
|
|
dom: 'Bfrtip',
|
|
select: {
|
|
style: 'single'
|
|
},
|
|
language: {
|
|
zeroRecords: 'No Languages Profiles'
|
|
},
|
|
searching: false,
|
|
ordering: false,
|
|
lengthChange: true,
|
|
responsive: false,
|
|
paging: false,
|
|
info: false,
|
|
processing: true,
|
|
serverSide: false,
|
|
ajax: {
|
|
url: "{{ url_for('api.languagesprofiles') }}",
|
|
type: 'GET'
|
|
},
|
|
columns: [
|
|
{ data: 'profileId',
|
|
visible: false
|
|
},
|
|
{ data: 'name' },
|
|
{ data: 'cutoff',
|
|
visible: false
|
|
},
|
|
{ data: 'items',
|
|
render: function(data, type, row) {
|
|
var languages = '';
|
|
$(eval(data)).each(function (index, value) {
|
|
if (value.forced == 'True') {
|
|
languages += '<span class="badge badge-secondary"' + ((row.cutoff == '65535' || value.id == row.cutoff) ? ' data-toggle="tooltip" title="Ignore others if this one is available" style="background-color:#911f93;"' : '') + '>' + value.language + ':forced' + ((value.audio_exclude === "True") ? ' <i class="fa fa-ban" data-toggle="tooltip" title="Ignore if matching audio track available"></i>' : '') + '</span> ';
|
|
} else if (value.hi == 'True') {
|
|
languages += '<span class="badge badge-secondary"' + ((row.cutoff == '65535' || value.id == row.cutoff) ? ' data-toggle="tooltip" title="Ignore others if this one is available" style="background-color:#911f93;"' : '') + '>' + value.language + ':hi' + ((value.audio_exclude === "True") ? ' <i class="fa fa-ban" data-toggle="tooltip" title="Ignore if matching audio track available"></i>' : '') + '</span> ';
|
|
} else {
|
|
languages += '<span class="badge badge-secondary"' + ((row.cutoff == '65535' || value.id == row.cutoff) ? ' data-toggle="tooltip" title="Ignore others if this one is available" style="background-color:#911f93;"' : '') + '>' + value.language + ((value.audio_exclude === "True") ? ' <i class="fa fa-ban" data-toggle="tooltip" title="Ignore if matching audio track available"></i>' : '') + '</span> ';
|
|
}
|
|
});
|
|
return languages;
|
|
}
|
|
}
|
|
],
|
|
buttons: [{
|
|
text: 'Add', className: 'btn btn-info text-white',
|
|
action: function () {
|
|
if ($('#add_languages_profiles').DataTable().rows().length) {
|
|
$('#add_languages_profiles').DataTable().clear();
|
|
}
|
|
$('#add_profile_name').val('');
|
|
$('#add_languages_profiles').DataTable().destroy();
|
|
var table_add = $('#add_languages_profiles').DataTable({
|
|
dom: 'Bfrtip',
|
|
select: {
|
|
style: 'single'
|
|
},
|
|
language: {
|
|
zeroRecords: 'No Languages In This Profile'
|
|
},
|
|
searching: false,
|
|
ordering: false,
|
|
lengthChange: false,
|
|
responsive: false,
|
|
paging: false,
|
|
info: false,
|
|
data: null,
|
|
columns: [
|
|
{ data: 'id',
|
|
visible: false
|
|
},
|
|
{ data: 'id' },
|
|
{ data: 'language',
|
|
render: function (data) {
|
|
var enabled_languages = Array();
|
|
$('#enabled_languages option:selected').each(function(){
|
|
enabled_languages.push([$(this).val(), $(this).text()]);
|
|
});
|
|
|
|
var html_dropdown = '<select class="selectpicker show-tick inline_select_add" data-width="fit">';
|
|
for (i = 0; i < enabled_languages.length; i++) {
|
|
html_dropdown += '<option value="' + enabled_languages[i][0] + '"' + ((data == enabled_languages[i][0]) ? ' selected="selected"' : '') + '>' + enabled_languages[i][1] + '</option>';
|
|
}
|
|
html_dropdown += '</select>';
|
|
|
|
return html_dropdown;
|
|
}
|
|
},
|
|
{ data: 'forced',
|
|
render: function(data) {
|
|
return '<select class="selectpicker show-tick inline_select_add" data-width="fit"><option value="True"' + ((data === 'True') ? ' selected="selected"' : '') + '>True</option><option value="False"' + ((data === 'False') ? ' selected="selected"' : '') + '>False</option></select>';
|
|
}
|
|
},
|
|
{ data: 'hi',
|
|
render: function(data) {
|
|
return '<select class="selectpicker show-tick inline_select_add" data-width="fit"><option value="True"' + ((data === 'True') ? ' selected="selected"' : '') + '>True</option><option value="False"' + ((data === 'False') ? ' selected="selected"' : '') + '>False</option></select>';
|
|
}
|
|
},
|
|
{ data: 'audio_exclude',
|
|
render: function(data) {
|
|
return '<select class="selectpicker show-tick inline_select_add" data-width="fit"><option value="True"' + ((data === 'True') ? ' selected="selected"' : '') + '>True</option><option value="False"' + ((data === 'False') ? ' selected="selected"' : '') + '>False</option></select>';
|
|
}
|
|
}
|
|
],
|
|
buttons: [{
|
|
text: 'Add', className: 'btn btn-info text-white',
|
|
action: function () {
|
|
var language_id = 0;
|
|
if (table_add.rows().data().toArray().length) {
|
|
language_id = Math.max(...table_add.column(0).data().toArray());
|
|
}
|
|
language_id++;
|
|
table_add.row.add({
|
|
id: language_id,
|
|
language: '',
|
|
forced: 'False',
|
|
hi: 'False',
|
|
audio_exclude: 'False'
|
|
}).draw();
|
|
$('.inline_select_add').selectpicker('refresh');
|
|
|
|
$('.inline_select_add.selectpicker').on('changed.bs.select', function () {
|
|
table_add.row( $(this).closest('tr') ).cell( $(this).closest('td') ).data($(this).val());
|
|
$('.inline_select_add').selectpicker('refresh');
|
|
table_add.draw();
|
|
});
|
|
}
|
|
},
|
|
{
|
|
extend: 'selected',
|
|
text: 'Delete', className: 'btn btn-info text-white',
|
|
action: function () {
|
|
table_add.row( { selected: true } ).remove().draw();
|
|
}
|
|
}]
|
|
});
|
|
$('#addModal').modal('show');
|
|
}
|
|
},
|
|
{
|
|
extend: 'selected',
|
|
text: 'Edit', className: 'btn btn-info text-white',
|
|
action: function () {
|
|
$('#edit_profile_name').val(table.row( { selected: true } ).data()['name']);
|
|
var items = $.parseJSON(table.row( { selected: true } ).data()['items']);
|
|
$('#edit_languages_profiles').DataTable().destroy();
|
|
var table_edit = $('#edit_languages_profiles').DataTable({
|
|
dom: 'Bfrtip',
|
|
select: {
|
|
style: 'single'
|
|
},
|
|
language: {
|
|
zeroRecords: 'No Languages In This Profile'
|
|
},
|
|
searching: false,
|
|
ordering: false,
|
|
lengthChange: false,
|
|
responsive: false,
|
|
paging: false,
|
|
info: false,
|
|
data: items,
|
|
columns: [
|
|
{ data: 'id',
|
|
visible: false
|
|
},
|
|
{ data: 'id' },
|
|
{ data: 'language',
|
|
render: function (data) {
|
|
var enabled_languages = Array();
|
|
$('#enabled_languages option:selected').each(function(){
|
|
enabled_languages.push([$(this).val(), $(this).text()]);
|
|
});
|
|
|
|
var html_dropdown = '<select class="selectpicker show-tick inline_select_edit" data-width="fit">';
|
|
for (i = 0; i < enabled_languages.length; i++) {
|
|
html_dropdown += '<option value="' + enabled_languages[i][0] + '"' + ((data == enabled_languages[i][0]) ? ' selected="selected"' : '') + '>' + enabled_languages[i][1] + '</option>';
|
|
}
|
|
html_dropdown += '</select>'
|
|
|
|
return html_dropdown;
|
|
}
|
|
},
|
|
{ data: 'forced',
|
|
render: function(data) {
|
|
return '<select class="selectpicker show-tick inline_select_edit" data-width="fit"><option value="True"' + ((data === 'True') ? ' selected="selected"' : '') + '>True</option><option value="False"' + ((data === 'False') ? ' selected="selected"' : '') + '>False</option></select>';
|
|
}
|
|
},
|
|
{ data: 'hi',
|
|
render: function(data) {
|
|
return '<select class="selectpicker show-tick inline_select_edit" data-width="fit"><option value="True"' + ((data === 'True') ? ' selected="selected"' : '') + '>True</option><option value="False"' + ((data === 'False') ? ' selected="selected"' : '') + '>False</option></select>';
|
|
}
|
|
},
|
|
{ data: 'audio_exclude',
|
|
render: function(data) {
|
|
return '<select class="selectpicker show-tick inline_select_edit" data-width="fit"><option value="True"' + ((data === 'True') ? ' selected="selected"' : '') + '>True</option><option value="False"' + ((data === 'False') ? ' selected="selected"' : '') + '>False</option></select>';
|
|
}
|
|
}
|
|
],
|
|
buttons: [{
|
|
text: 'Add', className: 'btn btn-info text-white',
|
|
action: function () {
|
|
var language_id = 0;
|
|
if (table_edit.rows().data().toArray().length) {
|
|
language_id = Math.max(...table_edit.column(0).data().toArray());
|
|
}
|
|
language_id++;
|
|
table_edit.row.add({
|
|
id: language_id,
|
|
language: '',
|
|
forced: 'False',
|
|
hi: 'False',
|
|
audio_exclude: 'False'
|
|
}).draw();
|
|
$('.inline_select_edit').selectpicker('refresh');
|
|
|
|
$('.inline_select_edit.selectpicker').on('changed.bs.select', function () {
|
|
table_edit.row( $(this).closest('tr') ).cell( $(this).closest('td') ).data($(this).val());
|
|
$('.inline_select_edit').selectpicker('refresh');
|
|
table_edit.draw();
|
|
});
|
|
}
|
|
},
|
|
{
|
|
extend: 'selected',
|
|
text: 'Delete', className: 'btn btn-info text-white',
|
|
action: function () {
|
|
table_edit.row( { selected: true } ).remove().draw();
|
|
}
|
|
}]
|
|
});
|
|
$('#edit_language_cutoff').val(table.row( { selected: true } ).data()['cutoff']);
|
|
$('#edit_profile_id').val(table.row( { selected: true } ).data()['profileId']);
|
|
$('.inline_select_edit').selectpicker('refresh');
|
|
$('#editModal').modal('show');
|
|
|
|
$('.inline_select_edit.selectpicker').on('changed.bs.select', function () {
|
|
table_edit.row( $(this).closest('tr') ).cell( $(this).closest('td') ).data($(this).val());
|
|
$('.inline_select_edit').selectpicker('refresh');
|
|
table_edit.draw();
|
|
});
|
|
}
|
|
},
|
|
{
|
|
extend: 'selected',
|
|
text: 'Delete', className: 'btn btn-info text-white',
|
|
action: function () {
|
|
table.row( { selected: true } ).remove().draw();
|
|
$('#settings_form').trigger('change');
|
|
}
|
|
}]
|
|
});
|
|
|
|
$('#add_profile_name').on('input', function() {
|
|
if ($('#add_languages_profiles').DataTable().rows().count() && $('#add_profile_name').val()) {
|
|
$('#add_save_button').prop('disabled', false).css('cursor', 'auto');
|
|
} else {
|
|
$('#add_save_button').prop('disabled', true).css('cursor', 'not-allowed');
|
|
}
|
|
})
|
|
|
|
$('#add_languages_profiles').DataTable().on( 'draw', function () {
|
|
if ($('#add_languages_profiles').DataTable().rows().count() && $('#add_profile_name').val()) {
|
|
$('#add_save_button').prop('disabled', false).css('cursor', 'auto');
|
|
} else {
|
|
$('#add_save_button').prop('disabled', true).css('cursor', 'not-allowed');
|
|
}
|
|
|
|
var previousValue = $("#add_language_cutoff").val();
|
|
$("#add_language_cutoff").empty();
|
|
$('#add_language_cutoff').append('<option value="">Disabled</option>');
|
|
$('#add_language_cutoff').append('<option value="65535">Any of them</option>');
|
|
|
|
var ids = $('#add_languages_profiles').DataTable().rows().data().pluck( 'id' ).toArray();
|
|
$(ids).each( function(i, item) {
|
|
$('#add_language_cutoff').append('<option value="' + item + '">' + item + '</option>');
|
|
});
|
|
$("#add_language_cutoff").val(previousValue);
|
|
$("#add_language_cutoff").selectpicker("refresh");
|
|
} );
|
|
|
|
$('#edit_profile_name').on('input', function() {
|
|
if ($('#edit_languages_profiles').DataTable().rows().count() && $('#edit_profile_name').val()) {
|
|
$('#edit_save_button').prop('disabled', false).css('cursor', 'auto');
|
|
} else {
|
|
$('#edit_save_button').prop('disabled', true).css('cursor', 'not-allowed');
|
|
}
|
|
})
|
|
|
|
$('#edit_languages_profiles').DataTable().on( 'draw', function () {
|
|
if ($('#edit_languages_profiles').DataTable().rows().count() && $('#edit_profile_name').val()) {
|
|
$('#edit_save_button').prop('disabled', false).css('cursor', 'auto');
|
|
} else {
|
|
$('#edit_save_button').prop('disabled', true).css('cursor', 'not-allowed');
|
|
}
|
|
|
|
var previousValue = $("#edit_language_cutoff").val();
|
|
$("#edit_language_cutoff").empty();
|
|
$('#edit_language_cutoff').append('<option value="">Disabled</option>');
|
|
$('#edit_language_cutoff').append('<option value="65535">Any of them</option>');
|
|
|
|
var ids = $('#edit_languages_profiles').DataTable().rows().data().pluck( 'id' ).toArray();
|
|
$(ids).each( function(i, item) {
|
|
$('#edit_language_cutoff').append('<option value="' + item + '">' + item + '</option>');
|
|
});
|
|
$("#edit_language_cutoff").val(previousValue);
|
|
$("#edit_language_cutoff").selectpicker("refresh");
|
|
} );
|
|
|
|
// Hide *_div on default-enabled change
|
|
$('#settings-general-serie_default_enabled').on('change', function() {
|
|
if ($(this).prop('checked')) {
|
|
$('#series_default_div').show();
|
|
} else {
|
|
$('#series_default_div').hide();
|
|
}
|
|
});
|
|
|
|
$('#settings-general-movie_default_enabled').on('change', function() {
|
|
if ($(this).prop('checked')) {
|
|
$('#movies_default_div').show();
|
|
} else {
|
|
$('#movies_default_div').hide();
|
|
}
|
|
});
|
|
|
|
// Listen to profiles change and populate the default dropdowns accordingly
|
|
$('#languages_profiles').DataTable().on( 'draw', function () {
|
|
if ($("#settings-general-serie_default_profile").length > 1) {
|
|
var previousValueSerie = $("#settings-general-serie_default_profile").val();
|
|
} else {
|
|
var previousValueSerie = '{{settings.general.serie_default_profile}}';
|
|
}
|
|
if ($("#settings-general-movie_default_profile").length > 1) {
|
|
var previousValueMovie = $("#settings-general-movie_default_profile").val();
|
|
} else {
|
|
var previousValueMovie = '{{settings.general.movie_default_profile}}';
|
|
}
|
|
|
|
$("#settings-general-serie_default_profile").empty();
|
|
$("#settings-general-movie_default_profile").empty();
|
|
$('#settings-general-serie_default_profile').append('<option value="">None</option>');
|
|
$('#settings-general-movie_default_profile').append('<option value="">None</option>');
|
|
|
|
var ids = $('#languages_profiles').DataTable().rows().data().toArray();
|
|
$(ids).each( function(i, item) {
|
|
$('#settings-general-serie_default_profile').append('<option value="' + item.profileId + '">' + item.name + '</option>');
|
|
$('#settings-general-movie_default_profile').append('<option value="' + item.profileId + '">' + item.name + '</option>');
|
|
});
|
|
$("#settings-general-serie_default_profile").val(previousValueSerie);
|
|
$("#settings-general-movie_default_profile").val(previousValueMovie);
|
|
$("#settings-general-serie_default_profile").selectpicker("refresh");
|
|
$("#settings-general-movie_default_profile").selectpicker("refresh");
|
|
} );
|
|
|
|
$('#save_button').on('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
var formdata = new FormData(document.getElementById("settings_form"));
|
|
|
|
// Make sure empty default languages select are send (bug in bootstrap-select)
|
|
if (formdata.get('settings-general-serie_default_profile') == null) {
|
|
formdata.append('settings-general-serie_default_profile', null)
|
|
}
|
|
if (formdata.get('settings-general-movie_default_profile') == null) {
|
|
formdata.append('settings-general-movie_default_profile', null)
|
|
}
|
|
|
|
// Make sure all checkbox input are sent with true/false value
|
|
$('input[type=checkbox]').each(function () {
|
|
formdata.set($(this).prop('id'), $(this).prop('checked'));
|
|
});
|
|
|
|
formdata.append('languages_profiles', JSON.stringify(table.rows().data().toArray()));
|
|
|
|
$.ajax({
|
|
url: "{{ url_for('api.savesettings') }}",
|
|
data: formdata,
|
|
processData: false,
|
|
contentType: false,
|
|
type: 'POST',
|
|
complete: function () {
|
|
$('#save_button_checkmark').show();
|
|
form_changed = false;
|
|
$('#save_button').prop('disabled', true).css('cursor', 'not-allowed');
|
|
setTimeout(
|
|
function()
|
|
{
|
|
$('#save_button_checkmark').hide();
|
|
}, 2000);
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#add_save_button').on('click', function(e) {
|
|
e.preventDefault();
|
|
var table_add = $('#add_languages_profiles').DataTable();
|
|
var items = [];
|
|
table_add.rows().every( function (row) {
|
|
var row_item = table_add.cells( row, '' ).render( 'display' );
|
|
var language = $(row_item[2]).filter('select').selectpicker().val();
|
|
var forced = $(row_item[3]).filter('select').val();
|
|
var hi = $(row_item[4]).filter('select').val();
|
|
var audio_exclude = $(row_item[5]).filter('select').val();
|
|
items.push({
|
|
id: row_item[1],
|
|
language: language,
|
|
forced: forced,
|
|
hi: hi,
|
|
audio_exclude: audio_exclude
|
|
});
|
|
})
|
|
|
|
if (table.rows().data().toArray().length === 0) {
|
|
var languages_profile_id = 0;
|
|
} else {
|
|
var languages_profile_id = Math.max(...table.column(0).data().toArray());
|
|
}
|
|
languages_profile_id++
|
|
table.row.add({
|
|
profileId: languages_profile_id,
|
|
name: $('#add_profile_name').val(),
|
|
cutoff: $('#add_language_cutoff').val(),
|
|
items: JSON.stringify(items)
|
|
}).draw();
|
|
$('#addModal').modal('hide');
|
|
$('#settings_form').trigger('change');
|
|
});
|
|
|
|
$('#edit_save_button').on('click', function(e) {
|
|
e.preventDefault();
|
|
var table_edit = $('#edit_languages_profiles').DataTable();
|
|
var items = [];
|
|
table_edit.rows().every( function (row) {
|
|
var row_item = table_edit.cells( row, '' ).render( 'display' );
|
|
var language = $(row_item[2]).filter('select').selectpicker().val();
|
|
var forced = $(row_item[3]).filter('select').val();
|
|
var hi = $(row_item[4]).filter('select').val();
|
|
var audio_exclude = $(row_item[5]).filter('select').val();
|
|
items.push({
|
|
id: row_item[1],
|
|
language: language,
|
|
forced: forced,
|
|
hi: hi,
|
|
audio_exclude: audio_exclude
|
|
});
|
|
})
|
|
table.row( { selected: true } ).data({
|
|
profileId: parseInt($('#edit_profile_id').val()),
|
|
name: $('#edit_profile_name').val(),
|
|
cutoff: $('#edit_language_cutoff').val(),
|
|
items: JSON.stringify(items)
|
|
}).draw();
|
|
$('#editModal').modal('hide');
|
|
$('#settings_form').trigger('change');
|
|
});
|
|
|
|
function getLanguages() {
|
|
$.ajax({
|
|
url: "{{ url_for('api.languages') }}?enabled=false",
|
|
success: function (data) {
|
|
$('#enabled_languages').empty();
|
|
$.each(data, function (i, item) {
|
|
$('#enabled_languages').append('<option value="' + item.code2 + '"' + ((item.enabled) ? ' selected="selected"' : '') + '>' + item.name + '</option>');
|
|
});
|
|
$("#enabled_languages").selectpicker("refresh");
|
|
}
|
|
});
|
|
}
|
|
|
|
// monitor changes to the settings_form
|
|
$('#settings_form').on('change', function() {
|
|
form_changed = true;
|
|
$('#save_button').prop('disabled', false).css('cursor', 'auto');
|
|
})
|
|
});
|
|
</script>
|
|
{% endblock tail %}
|