gl-website-deployer/admin/phpMyAdmin/templates/indexes.twig
2024-11-23 20:45:29 +01:00

95 lines
4.2 KiB
Twig

<fieldset class="pma-fieldset index_info">
<legend id="index_header">
{% trans 'Indexes' %}
{{ show_mysql_docu('optimizing-database-structure') }}
</legend>
{% if indexes is not empty %}
{{ indexes_duplicates|raw }}
{{ include('modals/preview_sql_confirmation.twig') }}
<div class="table-responsive jsresponsive">
<table class="table table-striped table-hover table-sm w-auto align-middle" id="table_index">
<thead>
<tr>
<th colspan="3" class="d-print-none">{% trans 'Action' %}</th>
<th>{% trans 'Keyname' %}</th>
<th>{% trans 'Type' %}</th>
<th>{% trans 'Unique' %}</th>
<th>{% trans 'Packed' %}</th>
<th>{% trans 'Column' %}</th>
<th>{% trans 'Cardinality' %}</th>
<th>{% trans 'Collation' %}</th>
<th>{% trans 'Null' %}</th>
<th>{% trans 'Comment' %}</th>
</tr>
</thead>
{% for index in indexes %}
<tbody class="row_span">
{% set columns_count = index.getColumnCount() %}
<tr class="noclick">
<td rowspan="{{ columns_count }}" class="edit_index d-print-none ajax">
<a class="ajax" href="{{ url('/table/indexes') }}" data-post="{{ get_common(url_params|merge({'index': index.getName()}), '', false) }}">
{{ get_icon('b_edit', 'Edit'|trans) }}
</a>
</td>
<td rowspan="{{ columns_count }}" class="rename_index d-print-none ajax" >
<a class="ajax" href="{{ url('/table/indexes/rename') }}" data-post="{{ get_common(url_params|merge({'index': index.getName()}), '', false) }}">
{{ get_icon('b_rename', 'Rename'|trans) }}
</a>
</td>
<td rowspan="{{ columns_count }}" class="d-print-none">
{% if index.getName() == 'PRIMARY' %}
{% set index_params = {
'sql_query': 'ALTER TABLE ' ~ backquote(table) ~ ' DROP PRIMARY KEY;',
'message_to_show': 'The primary key has been dropped.'|trans
} %}
{% else %}
{% set index_params = {
'sql_query': 'ALTER TABLE ' ~ backquote(table) ~ ' DROP INDEX ' ~ backquote(index.getName()) ~ ';',
'message_to_show': 'Index %s has been dropped.'|trans|format(index.getName())
} %}
{% endif %}
<input type="hidden" class="drop_primary_key_index_msg" value="{{ index_params.sql_query }}">
{{ link_or_button(
url('/sql'),
url_params|merge(index_params),
get_icon('b_drop', 'Drop'|trans),
{'class': 'drop_primary_key_index_anchor ajax'}
) }}
</td>
<th rowspan="{{ columns_count }}">{{ index.getName() }}</th>
<td rowspan="{{ columns_count }}">{{ index.getType()|default(index.getChoice()) }}</td>
<td rowspan="{{ columns_count }}">{{ index.isUnique() ? 'Yes'|trans : 'No'|trans }}</td>
<td rowspan="{{ columns_count }}">{{ index.isPacked()|raw }}</td>
{% for column in index.getColumns() %}
{% if column.getSeqInIndex() > 1 %}
<tr class="noclick">
{% endif %}
<td>
{% if column.hasExpression() %}{{ column.getExpression() }}{% else %}{{ column.getName() }}{% endif %}
{% if column.getSubPart() is not empty %}
({{ column.getSubPart() }})
{% endif %}
</td>
<td>{{ column.getCardinality() }}</td>
<td>{{ column.getCollation() }}</td>
<td>{{ column.getNull(true) }}</td>
{% if column.getSeqInIndex() == 1 %}
<td rowspan="{{ columns_count }}">{{ index.getComments() }}</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
{% endfor %}
</table>
</div>
{% else %}
<div class="no_indexes_defined">{{ 'No index defined!'|trans|notice }}</div>
{% endif %}
</fieldset>