{% extends 'table/page_with_secondary_tabs.twig' %}

{% block content %}
<form method="post" action="{{ url('/table/relation') }}">
    {{ get_hidden_inputs(db, table) }}
    {# InnoDB #}
    {% if is_foreign_key_supported(tbl_storage_engine) %}
        <fieldset class="pma-fieldset mb-3">
            <legend>{% trans 'Foreign key constraints' %}</legend>
            <div class="table-responsive-md jsresponsive">
            <table class="relationalTable table table-striped w-auto">
                <thead>
                <tr>
                    <th>{% trans 'Actions' %}</th>
                    <th>{% trans 'Constraint properties' %}</th>
                    {% if tbl_storage_engine|upper == 'INNODB' %}
                        <th>
                            {% trans 'Column' %}
                            {{ show_hint('Creating a foreign key over a non-indexed column would automatically create an index on it. Alternatively, you can define an index below, before creating the foreign key.'|trans) }}
                        </th>
                    {% else %}
                        <th>
                            {% trans 'Column' %}
                            {{ show_hint('Only columns with index will be displayed. You can define an index below.'|trans) }}
                        </th>
                    {% endif %}
                    <th colspan="3">
                        {% trans 'Foreign key constraint' %}
                        ({{ tbl_storage_engine }})
                    </th>
                </tr>
                <tr>
                    <th></th>
                    <th></th>
                    <th></th>
                    <th>{% trans 'Database' %}</th>
                    <th>{% trans 'Table' %}</th>
                    <th>{% trans 'Column' %}</th>
                </tr></thead>
                {% set i = 0 %}
                {% if existrel_foreign is not empty %}
                    {% for key, one_key in existrel_foreign %}
                        {# Foreign database dropdown #}
                        {% set foreign_db = one_key['ref_db_name'] is defined
                            and one_key['ref_db_name'] is not null
                            ? one_key['ref_db_name'] : db %}
                        {% set foreign_table = '' %}
                        {% if foreign_db %}
                            {% set foreign_table = one_key['ref_table_name'] is defined
                                and one_key['ref_table_name'] is not null
                                ? one_key['ref_table_name'] : '' %}
                        {% endif %}
                        {% set unique_columns = [] %}
                        {% if foreign_db is not same as('') and foreign_table is not same as('') %}
                            {% set table_obj = table_get(foreign_table, foreign_db) %}
                            {% set unique_columns = table_obj.getUniqueColumns(false, false) %}
                        {% endif %}
                        {% include 'table/relation/foreign_key_row.twig' with {
                            'i': i,
                            'one_key': one_key,
                            'column_array': column_array,
                            'options_array': options_array,
                            'tbl_storage_engine': tbl_storage_engine,
                            'db': db,
                            'table': table,
                            'url_params': url_params,
                            'databases': databases,
                            'foreign_db': foreign_db,
                            'foreign_table': foreign_table,
                            'unique_columns': unique_columns
                        } only %}
                        {% set i = i + 1 %}
                    {% endfor %}
                {% endif %}
                {% include 'table/relation/foreign_key_row.twig' with {
                    'i': i,
                    'one_key': [],
                    'column_array': column_array,
                    'options_array': options_array,
                    'tbl_storage_engine': tbl_storage_engine,
                    'db': db,
                    'table': table,
                    'url_params': url_params,
                    'databases': databases,
                    'foreign_db': '',
                    'foreign_table': '',
                    'unique_columns': unique_columns
                } only %}
                {% set i = i + 1 %}
                <tr>
                    <th colspan="6">
                        <a class="formelement clearfloat add_foreign_key" href="">
                            {% trans '+ Add constraint' %}
                        </a>
                    </th>
                </tr>
            </table>
            </div>
        </fieldset>
    {% endif %}

    {% if relation_parameters.relationFeature is not null %}
        {% if default_sliders_state != 'disabled' and is_foreign_key_supported(tbl_storage_engine) %}
        <div class="mb-3">
          <button class="btn btn-sm btn-secondary" type="button" data-bs-toggle="collapse" data-bs-target="#internalRelationships" aria-expanded="{{ default_sliders_state == 'open' ? 'true' : 'false' }}" aria-controls="internalRelationships">
            {% trans 'Internal relationships' %}
          </button>
        </div>
        <div class="collapse mb-3{{ default_sliders_state == 'open' ? ' show' }}" id="internalRelationships">
        {% endif %}

        <fieldset class="pma-fieldset">
            <legend>
                {% trans 'Internal relationships' %}
                {{ show_docu('config', 'cfg_Servers_relation') }}
            </legend>
            <table class="relationalTable table table-striped table-hover table-sm w-auto">
                <thead>
                  <tr>
                    <th>{% trans 'Column' %}</th>
                    <th>
                      {% trans 'Internal relation' %}
                      {% if is_foreign_key_supported(tbl_storage_engine) %}
                        {{ show_hint('An internal relation is not necessary when a corresponding FOREIGN KEY relation exists.'|trans) }}
                      {% endif %}
                    </th>
                  </tr>
                </thead>
                <tbody>
                    {% set saved_row_cnt = save_row|length - 1 %}
                    {% for i in 0..saved_row_cnt %}
                        {% set myfield = save_row[i]['Field'] %}
                        {# Use an md5 as array index to avoid having special characters
                           in the name attribute (see bug #1746964 ) #}
                        {% set myfield_md5 = column_hash_array[myfield] %}

                        {% set foreign_table = '' %}
                        {% set foreign_column = false %}

                        {# Database dropdown #}
                        {% if existrel[myfield] is defined %}
                            {% set foreign_db = existrel[myfield]['foreign_db'] %}
                        {% else %}
                            {% set foreign_db = db %}
                        {% endif %}

                        {# Table dropdown #}
                        {% set tables = [] %}
                        {% if foreign_db %}
                            {% if existrel[myfield] is defined %}
                                {% set foreign_table = existrel[myfield]['foreign_table'] %}
                            {% endif %}
                            {% set tables = dbi.getTables(foreign_db) %}
                        {% endif %}

                        {# Column dropdown #}
                        {% set unique_columns = [] %}
                        {% if foreign_db is not same as('') and foreign_table is not same as('') %}
                            {% if existrel[myfield] is defined %}
                                {% set foreign_column = existrel[myfield]['foreign_field'] %}
                            {% endif %}
                            {% set table_obj = table_get(foreign_table, foreign_db) %}
                            {% set unique_columns = table_obj.getUniqueColumns(false, false) %}
                        {% endif %}

                        <tr>
                            <td class="align-middle">
                                <strong>{{ myfield }}</strong>
                                <input type="hidden" name="fields_name[{{ myfield_md5 }}]"
                                    value="{{ myfield }}">
                            </td>

                            <td>
                                {% include 'table/relation/relational_dropdown.twig' with {
                                    'name': 'destination_db[' ~ myfield_md5 ~ ']',
                                    'title': 'Database'|trans,
                                    'values': databases,
                                    'foreign': foreign_db
                                } only %}

                                {% include 'table/relation/relational_dropdown.twig' with {
                                    'name': 'destination_table[' ~ myfield_md5 ~ ']',
                                    'title': 'Table'|trans,
                                    'values': tables,
                                    'foreign': foreign_table
                                } only %}

                                {% include 'table/relation/relational_dropdown.twig' with {
                                    'name': 'destination_column[' ~ myfield_md5 ~ ']',
                                    'title': 'Column'|trans,
                                    'values': unique_columns,
                                    'foreign': foreign_column
                                } only %}
                            </td>
                        </tr>
                    {% endfor %}
                </tbody>
            </table>
        </fieldset>
        {% if default_sliders_state != 'disabled' and is_foreign_key_supported(tbl_storage_engine) %}
        </div>
        {% endif %}
    {% endif %}

    {% if relation_parameters.displayFeature is not null %}
        {% set disp = get_display_field(db, table) %}
        <fieldset class="pma-fieldset">
            <label>{% trans 'Choose column to display:' %}</label>
            <select name="display_field">
                <option value="">---</option>
                {% for row in save_row %}
                    <option value="{{ row['Field'] }}"
                        {%- if disp is defined and row['Field'] == disp %}
                            selected="selected"
                        {%- endif %}>
                        {{ row['Field'] }}
                    </option>
                {% endfor %}
            </select>
        </fieldset>
    {% endif %}

    <fieldset class="pma-fieldset tblFooters">
        <input class="btn btn-secondary preview_sql" type="button" value="{% trans 'Preview SQL' %}">
        <input class="btn btn-primary" type="submit" value="{% trans 'Save' %}">
    </fieldset>
</form>

<div class="modal fade" id="previewSqlModal" tabindex="-1" aria-labelledby="previewSqlModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="previewSqlModalLabel">{% trans 'Loading' %}</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{% trans 'Close' %}"></button>
      </div>
      <div class="modal-body">
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" id="previewSQLCloseButton" data-bs-dismiss="modal">{% trans 'Close' %}</button>
      </div>
    </div>
  </div>
</div>
{% endblock %}
