<style>
    .vote_form {
        border: 3px solid blue;
        border-radius: 5px;
        width: fit-content;
        margin-left: auto;
        margin-right: auto;
        padding: 0.2em 1em;
        background: #ebf0ff;
        color: #2e69ff;
    }
</style>
<form id="id_vote_form" class="vote_form">
    {% csrf_token %}
    <input id="id_points" class="vote-form-value" type="hidden" step="1"
           min="{{ min_possible_vote }}" max="{{ max_possible_vote }}" name="points">
    <table>
        <tbody>
            <tr>
                <td style="padding-top: 1em; padding-right: 3em">
                    <span><b>{{_('How difficult is this problem?')}}</b></span>
                </td>
                <td>
                    <div class="vote-rating">
                        <span class="stars-container">
                            {% for i in range(1, (max_possible_vote - min_possible_vote) // 100 + 2) %}
                                <span id="star{{i}}" star-score="{{i * 100}}" class="fa star"></span>
                            {% endfor %}
                        </span>
                    </div>
                </td>
            </tr>
            <tr>
                <td>
                    <span>{{_('This helps us improve the site')}}</span>
                </td>
                <td>
                    <span style="padding-left: 0.2em"><b>{{min_possible_vote}}</b></span>
                    <span style="float: right; padding-right: 0.2em"><b>{{max_possible_vote}}</b></span>
                </td>
            </tr>
        </tbody>
    </table>
    <div id="id_points_error_box">
        <span id="id_points_error" class="voting-form-error"></span>
    </div>
    <div>
        <input type="hidden" id="id_vote_form_submit_button">
    </div>
</form>
<script>
    $('.star').hover(
        (e) => $(e.target).prevAll().addClass('filled-star'),
        (e) => $(e.target).prevAll().removeClass('filled-star')
    );
    $('.star').on('click', function() {
        $("#id_points").val($(this).attr('star-score'));
        $('#id_vote_form_submit_button').click();
        $('#id_vote_form').fadeOut(500);
    })
    $('#id_vote_form_submit_button').on('click', function (e) {
        e.preventDefault();
        $.ajax({
            url: '{{ url('vote', object.code) }}',
            type: 'POST',
            data: $('#id_vote_form').serialize(),
            success: function (data) {
                {% if request.user.is_superuser %}
                    updateUserVote(voted_points, data.points);
                {% endif %}
                voted_points = data.points;
                voteUpdate();
                // Forms are auto disabled to prevent resubmission, but we need to allow resubmission here.
                $('#id_vote_form_submit_button').removeAttr('disabled');
                var current = $.featherlight.current();
                if (current) current.close();
            },
            error: function (data) {
                let errors = data.responseJSON;
                if(errors === undefined) {
                    alert('Unable to delete vote: ' + data.responsetext);
                }

                if('points' in errors){
                    $('#id_points_error_box').show();
                    $('#id_points_error').prop('textContent', errors.points[0]);
                } else {
                    $('#id_points_error_box').hide();
                }
            }
        });
    });
</script>