{% extends 'base/layout.html' %}
{% load helpers %}
{% load form_helpers %}
{% load render_table from django_tables2 %}

{% comment %}
Context:
  model: The model class of the objects being modified
  form: The bulk edit form class
  table: The table class for rendering list of objects being modified
  return_url: The URL to which the user is redirected after submitting the form
{% endcomment %}

{% block title %}Editing {{ table.rows|length }} {{ model|meta:"verbose_name_plural"|bettertitle }}{% endblock %}

{% block tabs %}
  <ul class="nav nav-tabs px-3">
    <li class="nav-item" role="presentation">
      <button class="nav-link active" id="edit-form-tab" data-bs-toggle="tab" data-bs-target="#edit-form" type="button" role="tab" aria-controls="edit-form" aria-selected="true">
        Bulk Edit
      </button>
    </li>
    <li class="nav-item" role="presentation">
      <button class="nav-link" id="object-list-tab" data-bs-toggle="tab" data-bs-target="#object-list" type="button" role="tab" aria-controls="object-list" aria-selected="false">
        Selected Objects
        {% badge table.rows|length %}
      </button>
    </li>
  </ul>
{% endblock tabs %}

{% block content-wrapper %}
  <div class="tab-content">
    {% block content %}

      {# Edit form #}
      <div class="tab-pane show active" id="edit-form" role="tabpanel" aria-labelledby="edit-form-tab">
        <form action="" method="post" class="form form-horizontal">

          {% csrf_token %}
          {% if request.POST.return_url %}
            <input type="hidden" name="return_url" value="{{ request.POST.return_url }}" />
          {% endif %}
          {% for field in form.hidden_fields %}
            {{ field }}
          {% endfor %}

          <div class="row">
            <div class="col col-md-12 col-lg-10 offset-lg-1">
              <div class="card">
                <div class="card-body">
                  {% if form.fieldsets %}

                    {# Render grouped fields according to declared fieldsets #}
                    {% for group, fields in form.fieldsets %}
                      <div class="field-group mb-5">
                        <div class="row mb-2">
                          <h5 class="offset-sm-3">
                            {% if group %}{{ group }}{% else %}{{ model|meta:"verbose_name"|bettertitle }}{% endif %}
                          </h5>
                        </div>
                        {% for name in fields %}
                          {% with field=form|getfield:name %}
                            {% if field.name in form.nullable_fields %}
                              {% render_field field bulk_nullable=True %}
                            {% else %}
                              {% render_field field %}
                            {% endif %}
                          {% endwith %}
                        {% endfor %}
                      </div>
                    {% endfor %}

                    {# Render tag add/remove fields #}
                    {% if form.add_tags and form.remove_tags %}
                      <div class="field-group mb-5">
                        <div class="row mb-2">
                          <h5 class="offset-sm-3">Tags</h5>
                        </div>
                        {% render_field form.add_tags %}
                        {% render_field form.remove_tags %}
                      </div>
                    {% endif %}

                    {# Render custom fields #}
                    {% if form.custom_fields %}
                      <div class="field-group mb-5">
                        <div class="row mb-2">
                          <h5 class="offset-sm-3">Custom Fields</h5>
                        </div>
                        {% render_custom_fields form %}
                      </div>
                    {% endif %}

                    {# Render comments #}
                    {% if form.comments %}
                      <div class="field-group mb-5">
                        <div class="row mb-2">
                          <h5 class="offset-sm-3">Comments</h5>
                        </div>
                        {% render_field form.comments bulk_nullable=True %}
                      </div>
                    {% endif %}

                  {% else %}

                    {# Render all fields #}
                    {% for field in form.visible_fields %}
                      {% if field.name in form.nullable_fields %}
                        {% render_field field bulk_nullable=True %}
                      {% else %}
                        {% render_field field %}
                      {% endif %}
                    {% endfor %}

                  {% endif %}
                </div>
              </div>

              <div class="text-end">
                <a href="{{ return_url }}" class="btn btn-sm btn-outline-danger">Cancel</a>
                <button type="submit" name="_apply" class="btn btn-sm btn-primary">Apply</button>
              </div>
            </div>
          </div>

        </form>
      </div>

      {# Selected objects list #}
      <div class="tab-pane" id="object-list" role="tabpanel" aria-labelledby="object-list-tab">
        <div class="card">
          <div class="card-body table-responsive">
            {% render_table table 'inc/table.html' %}
          </div>
        </div>
      </div>

    {% endblock content %}
  </div>
{% endblock content-wrapper %}
