{% extends 'base.html.twig' %}
{% block title %}{{ pageTitle|trans }}{% endblock %}
{% set filterMacrosInvolved = true %}
{% set paginateMacrosInvolved = true %}
{% block body %}
{% from '/macro/filter.html.twig' import layout as filterMacrosLayout %}
{{ filterMacrosLayout(filterForm, routeNameCreate) }}
{% form_theme listCollectionForm 'universal/form_theme.html.twig' %}
{% if(additionalFunctionality.export) %}
<button type="button" data-format="xlsx" class="exportButton mb-5 w-full py-3 font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-lg active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple">
{{ 'universal.button.export.xlsx.label'|trans }}
</button>
{% endif %}
<div class="w-full overflow-x-auto">
<table class="w-full whitespace-no-wrap">
<thead>
<tr
class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800"
>
{% for column in listForm.children %}
{% if (column.vars.name != 'controlButtons') %}
<th class="px-4 py-3">
{% if (column.vars.label_attr.sort) %}
<span class="sortButton" data-field="{{ column.vars.name }}" style="cursor: pointer">
{{ column.vars.label|trans }}
{% if (sortCollection.field == column.vars.name) %}
<span class="sortButtonOrder" style="color: mediumpurple" data-order="{{ sortCollection.order }}">
{% if (sortCollection.order == 'ASC') %}
↑
{% else %}
↓
{% endif %}
</span>
{% endif %}
</span>
{% else %}
{{ column.vars.label|trans }}
{% endif %}
</th>
{% endif %}
{% endfor %}
{% if (listForm.children.controlButtons is defined) %}
<th class="px-4 py-3">{{ listForm.controlButtons.vars.label|trans }}</th>
{% endif %}
</tr>
</thead>
<tbody
class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"
>
{{ form_start(listCollectionForm) }}
{% for dataField in listCollectionForm.collection %}
<tr class="text-gray-700 dark:text-gray-400">
{% for column in dataField.children %}
{% if (column.vars.name != 'controlButtons') %}
<td class="px-4 py-3 text-sm">
{{ form_widget(dataField[column.vars.name]) }}
</td>
{% endif %}
{% endfor %}
{% if (listForm.children.controlButtons is defined) %}
<td class="px-4 py-3">
<div class="flex items-center space-x-4 text-sm">
{% for column in dataField.controlButtons %}
{%
include '%s/layout.html.twig'|format(column.vars.attr.template)
with {
'title': column.vars.attr.title|trans,
'onClick': column.vars.attr.onClick,
'options': column.vars.attr.options
}
%}
{% endfor %}
</div>
</td>
{% endif %}
</tr>
{% endfor %}
{{ form_end(listCollectionForm, {render_rest: false}) }}
</tbody>
</table>
</div>
{% from '/macro/paginate.html.twig' import layout as paginateMacrosLayout %}
{{ paginateMacrosLayout(paginateCollection) }}
{% if(additionalFunctionality.export) %}
<script type="text/javascript">
$(document).on("click",".exportButton", function() {
document.location.href = '/surveyResult/export/'+this.dataset.format+'/'+window.location.search;
});
</script>
{% endif %}
<script type="text/javascript">
$(document).on("click",".sortButton", function() {
var field = $(this).data(`field`);
var order = "ASC";
var spanOrder = $(this).find('.sortButtonOrder')[0]
if (spanOrder) {
if ($(spanOrder).data(`order`) === 'ASC') {
order = "DESC";
}
else {
order = "ASC"
}
}
var url = new URL(window.location.href);
url.searchParams.set("sort[field]",field);
url.searchParams.set("sort[order]",order);
document.location.href = url.href;
});
</script>
{% endblock %}