{% extends '_main.html' %}

{% block title %}Languages - Bazarr{% endblock %}

{% block page_head %}
    <style>
        .warning {
            color: red;
        }
    </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>Enabled Languages</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>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-1">
                    <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>
                </div>
            </div>
            <div id="series_default_div">
                <div class="row">
                    <div class="col-sm-3 text-right">
                        <b>Languages</b>
                    </div>
                    <div class="form-group col-sm-8 pl-sm-0">
                        <select class="selectpicker" id="settings-general-serie_default_language" name="settings-general-serie_default_language" multiple></select>
                    </div>
                </div>
                <div class="row">
                    <div class="col-sm-3 text-right">
                        <b>Hearing-Impaired</b>
                    </div>
                    <div class="form-group col-sm-1">
                        <label class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input" id="settings-general-serie_default_hi" name="settings-general-serie_default_hi">
                            <span class="custom-control-label" for="settings-general-serie_default_hi"></span>
                        </label>
                    </div>
                </div>
                <div class="row">
                    <div class="col-sm-3 text-right">
                        <b>Forced</b>
                    </div>
                    <div class="form-group col-sm-8 pl-sm-0">
                        <select class="selectpicker" id="settings-general-serie_default_forced" name="settings-general-serie_default_forced">
                            <option value="False">False</option>
                            <option value="True">True</option>
                            <option value="Both">Both</option>
                        </select>
                    </div>
                </div>
                <br>
            </div>
            <br>
            <div class="row">
                <div class="col-sm-3 text-right">
                    <b>Movies Default Settings</b>
                </div>
                <div class="form-group col-sm-1">
                    <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>
                </div>
            </div>
            <div id="movies_default_div">
                <div class="row">
                    <div class="col-sm-3 text-right">
                        <b>Languages</b>
                    </div>
                    <div class="form-group col-sm-8 pl-sm-0">
                        <select class="selectpicker" id="settings-general-movie_default_language" name="settings-general-movie_default_language" multiple></select>
                    </div>
                </div>
                <div class="row">
                    <div class="col-sm-3 text-right">
                        <b>Hearing-Impaired</b>
                    </div>
                        <div class="form-group col-sm-1">
                        <label class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input" id="settings-general-movie_default_hi" name="settings-general-movie_default_hi">
                            <span class="custom-control-label" for="settings-general-movie_default_hi"></span>
                        </label>
                    </div>
                </div>
                <div class="row">
                    <div class="col-sm-3 text-right">
                        <b>Forced</b>
                    </div>
                    <div class="form-group col-sm-8 pl-sm-0">
                        <select class="selectpicker" id="settings-general-movie_default_forced" name="settings-general-movie_default_forced">
                            <option value="False">False</option>
                            <option value="True">True</option>
                            <option value="Both">Both</option>
                        </select>
                    </div>
                </div>
                <br>
            </div>
        </form>
    </div>
{% endblock body %}

{% block tail %}
    <script>
        $(document).ready(function () {
            getLanguages();

            // Hide checkmark over save button
            $('#save_button_checkmark').hide();

            // Listen to selection change on enabled_languages select and keep series and movies default language select synced
            $('#enabled_languages').on('changed.bs.select', function(event, clickedIndex, isSelected, previousValue) {
                actual = $("#enabled_languages option:selected").map(function() {
                    return $(this).val();
                }).get();

                if (previousValue) {
                    var added = actual.filter(x => !previousValue.includes(x));
                    var removed = previousValue.filter(x => !actual.includes(x));

                    if (added.length > 0) {
                        $('#settings-general-serie_default_language').append('<option value="' + added[0] + '">' + $("#enabled_languages option[value="+added[0]+"]").text() + '</option>');
                        $('#settings-general-movie_default_language').append('<option value="' + added[0] + '">' + $("#enabled_languages option[value="+added[0]+"]").text() + '</option>');
                    }
                    if (removed.length > 0) {
                        $("#settings-general-serie_default_language option[value="+removed[0]+"]").remove();
                        $("#settings-general-movie_default_language option[value="+removed[0]+"]").remove();
                    }
                } else {
                    $(actual).each( function(i, item) {
                        if ($('#settings-general-serie_default_language option[value='+item+']').length < 1) {
                            $('#settings-general-serie_default_language').append('<option value="' + item + '">' + $("#enabled_languages option[value="+item+"]").text() + '</option>');
                            $('#settings-general-movie_default_language').append('<option value="' + item + '">' + $("#enabled_languages option[value="+item+"]").text() + '</option>');
                        }
                    });
                }

                $('#settings-general-serie_default_language').selectpicker('val', {{settings.general.serie_default_language|safe}});
                $('#settings-general-movie_default_language').selectpicker('val', {{settings.general.movie_default_language|safe}});
                $("#settings-general-serie_default_language").selectpicker("refresh");
                $("#settings-general-movie_default_language").selectpicker("refresh");
            })

            // Set Select input values
            $('#settings-general-subfolder').val('{{settings.general.subfolder}}').trigger('change');
            $('#settings-general-anti_captcha_provider').val('{{settings.general.anti_captcha_provider}}').trigger('change');
            $('#settings-general-serie_default_forced').val('{{settings.general.serie_default_forced}}').trigger('change');
            $('#settings-general-movie_default_forced').val('{{settings.general.movie_default_forced}}').trigger('change');
            $('.selectpicker').selectpicker('refresh')

            // Listen to single language checkbox change to adapt languages menus
            $('#settings-general-single_language').on('change', function() {
                if ($(this).prop('checked')) {
                    $('#settings-general-serie_default_language').selectpicker({maxOptions:1}).selectpicker('refresh');
                    $('#settings-general-movie_default_language').selectpicker({maxOptions:1}).selectpicker('refresh');
                    $('#settings-general-serie_default_language').selectpicker('val', $('#settings-general-serie_default_language').val()[0]);
                    $('#settings-general-movie_default_language').selectpicker('val', $('#settings-general-movie_default_language').val()[0]);
                } else {
                    $('#settings-general-serie_default_language').selectpicker({maxOptions:false}).selectpicker('refresh');
                    $('#settings-general-movie_default_language').selectpicker({maxOptions:false}).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();
                }
            });

            // 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-serie_default_hi').prop('checked', {{'true' if settings.general.getboolean('serie_default_hi') else 'false'}}).trigger('change');
            $('#settings-general-movie_default_enabled').prop('checked', {{'true' if settings.general.getboolean('movie_default_enabled') else 'false'}}).trigger('change');
            $('#settings-general-movie_default_hi').prop('checked', {{'true' if settings.general.getboolean('movie_default_hi') else 'false'}}).trigger('change');

            $('#save_button').on('click', function() {
                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_language') == null) {
                    formdata.append('settings-general-serie_default_language', null)
                }
                if (formdata.get('settings-general-movie_default_language') == null) {
                    formdata.append('settings-general-movie_default_language', 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'));
                });
                $.ajax({
                    url: "{{ url_for('api.savesettings') }}",
                    data: formdata,
                    processData: false,
                    contentType: false,
                    type: 'POST',
                    complete: function () {
                        $('#save_button_checkmark').show();
                        setTimeout(
                            function()
                            {
                                $('#save_button_checkmark').hide();
                            }, 2000);
                    }
                });
            });

            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.name + '</option>');
                        });
                        getEnabledLanguages();
                        $("#enabled_languages").selectpicker("refresh");
                    }
                });
            }

            function getEnabledLanguages() {
                $.ajax({
                    url: "{{ url_for('api.languages') }}?enabled=true",
                    success: function (data) {
                        let optArr = [];
                        $.each(data, function (i, item) {
                            optArr.push(item.code2);
                        });
                        $('#enabled_languages').selectpicker('val', optArr);
                    }
                });
            }
        });
    </script>
{% endblock tail %}