<?xml version="1.0" encoding="UTF-8"?>

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:p="http://primefaces.org/ui" xmlns:e="http://www.ivu.de/elect/tags">

    <!--@elvariable id="erfassenView" type="de.ivu.elect.presentation.stimmeingabe.AbstractStimmeingabeGruppeStimmenErfassenViewListingListenkandidaturStimmen"-->
    <ui:param name="erfassenView" value="#{erfassenView}" />

    <!--@elvariable id="stimmeingabenGruppeStimmenTableLayout" type="de.ivu.elect.business.stimmeingabe.entity.StimmeingabeGruppeStimmenTableLayout"-->
    <ui:param name="stimmeingabenGruppeStimmenTableLayout" value="#{erfassenView.stimmeingabenGruppeStimmenTableLayout}" />
    <ui:param name="stimmeingabenGruppeStimmenReadonly" value="#{stimmeingabenGruppeStimmenTableLayout.erfassungGesperrt}" />

    <!-- Synchrones Ein- und Ausblenden ALLER Zeilen-Gruppen. -->
    <e:cdata><h:outputScript>/* <![CDATA[ */
        function toggleDataTableExpandableRowGroupsOnClick(event) {
           $target = $(event.target);

            if($target && event && event.target) {
                var doExpand = $target.hasClass('fa-angle-double-down');

                $target.parents('table').find('tbody a.ui-rowgroup-toggler').each(function(index, element) {
                    var $link = $(element);

                    if(($link.attr("aria-expanded") === "true") !== doExpand) {
                        $link.click();
                    }
                });

                $target.addClass('fa-angle-double-' + (doExpand ? 'up' : 'down')).removeClass('fa-angle-double-' + (doExpand ? 'down' : 'up'));
            }

            return true;
        }
    /* ]]> */</h:outputScript></e:cdata>

    <!--@elvariable id="stimmeingabeGruppeStimmen" type="de.ivu.elect.business.stimmeingabe.entity.StimmeingabeGruppeStimmen"-->
    <p:dataTable id="tblStimmeingabenGruppeStimmen" rendered="#{not empty erfassenView.stimmeingabenGruppeStimmen}" value="#{erfassenView.stimmeingabenGruppeStimmen}" var="stimmeingabeGruppeStimmen"
        rowKey="#{stimmeingabeGruppeStimmen.pk}" rowIndexVar="rowIndexZeroBased" rowStyleClass="#{stimmeingabeGruppeStimmen.rowStyleClass}"
        emptyMessage="#{msgs['component.data.table.empty.message']}" styleClass="ui-nohover">

        <ui:param name="anzahlEingabeColGruppeStimmenIndexZeroBased" value="0" />
        <ui:param name="anzahlEingabeColGruppeStimmenTabIndexRelativePerCol" value="#{anzahlEingabeColGruppeStimmenIndexZeroBased * stimmeingabenGruppeStimmenRowCount + rowIndexZeroBased + 1}" />
        <ui:param name="anzahlEingabeColGruppeStimmenTabIndexRelativePerRow" value="#{rowIndexZeroBased * stimmeingabenGruppeStimmenColCount + anzahlEingabeColGruppeStimmenIndexZeroBased + 1}" />
        <ui:param name="anzahlEingabeColGruppeStimmenTabIndex" value="#{stimmeingabenGruppeStimmenTabIndexOffset + (erfassenViewTabIndexPerCol ? anzahlEingabeColGruppeStimmenTabIndexRelativePerCol : anzahlEingabeColGruppeStimmenTabIndexRelativePerRow)}" />

        <!--@elvariable id="stimmeingabeGruppeStimmenGesamt" type="de.ivu.elect.business.stimmeingabe.entity.StimmeingabeGruppeStimmen"-->
        <ui:param name="stimmeingabeGruppeStimmenGesamt" value="#{erfassenView.getStimmeingabenGruppeStimmenGroupStimmeingabeGruppeStimmenGesamt(stimmeingabeGruppeStimmen)}" />

        <p:headerRow field="kennung" expandable="true">
            <p:column styleClass="ui-dt-c-rowgroup-toggler" /> <!-- Prime-Faces-Toggler -->

            <p:column rendered="#{stimmeingabenGruppeStimmenTableLayout.kennungVorStimmeingabeRendered}" styleClass="ui-dt-td-kennung-01">
                <h:outputText value="#{erfassenView.getStimmeingabenGruppeStimmenGroupKey(stimmeingabeGruppeStimmen)}" />
            </p:column>

            <p:column rendered="#{stimmeingabenGruppeStimmenTableLayout.bezeichnungRendered}" colspan="#{stimmeingabenGruppeStimmenReadonly ? 1 : stimmeingabenGruppeStimmenTableLayout.anzahlListenstimmeVergleichRendered ? 3 : 2}">
                <h:outputText value="#{erfassenView.getStimmeingabenGruppeStimmenGroupHeader(stimmeingabeGruppeStimmen)}" />
            </p:column>

            <p:column rendered="#{stimmeingabenGruppeStimmenReadonly and stimmeingabenGruppeStimmenTableLayout.anzahlListenstimmeVergleichRendered}" styleClass="ui-dt-td-numeric">
                <e:outputLong rendered="#{stimmeingabeGruppeStimmenGesamt.hasAnzahlListenstimmeVergleich()}" value="#{stimmeingabeGruppeStimmenGesamt.anzahlListenstimmeVergleich}" />
                <h:outputText rendered="#{not stimmeingabeGruppeStimmenGesamt.hasAnzahlListenstimmeVergleich()}" value="#{stimmeingabeGruppeStimmenGesamt.getAnzahlEingabeListenstimmeVergleichOrDefault(erfassenView.stimmeingabeAnzeigenAnzahlDefault)}" styleClass="ui-dt-c-numeric" />
            </p:column>

            <p:column rendered="#{stimmeingabenGruppeStimmenReadonly and stimmeingabenGruppeStimmenTableLayout.anzahlListenstimmeRendered}" styleClass="ui-dt-td-numeric">
                <e:outputLong rendered="#{stimmeingabeGruppeStimmenGesamt.hasAnzahlListenstimme()}" value="#{stimmeingabeGruppeStimmenGesamt.anzahlListenstimme}" />
                <h:outputText rendered="#{not stimmeingabeGruppeStimmenGesamt.hasAnzahlListenstimme()}" value="#{stimmeingabeGruppeStimmenGesamt.getAnzahlEingabeListenstimmeOrDefault(erfassenView.stimmeingabeAnzeigenAnzahlDefault)}" styleClass="ui-dt-c-numeric" />
            </p:column>

            <p:column rendered="#{stimmeingabenGruppeStimmenTableLayout.kennungNachStimmeingabeRendered}" styleClass="ui-dt-td-kennung-02">
                <h:outputText value="#{erfassenView.getStimmeingabenGruppeStimmenGroupKey(stimmeingabeGruppeStimmen)}" />
            </p:column>
        </p:headerRow>

        <p:column>
            <f:facet name="header">
                <!-- Custom-Toggler, cf. JavaScript-Funktion toggleDataTableExpandableRowGroupsOnClick! -->
                <p:commandLink styleClass="ui-rowgroup-toggler" onclick="return toggleDataTableExpandableRowGroupsOnClick(event);"><h:outputText styleClass="ui-rowgroup-toggler-icon ui-icon fa fa-angle-double-up"/></p:commandLink>
            </f:facet>
            <h:outputText value="&#160;" />
        </p:column>

        <p:column rendered="#{stimmeingabenGruppeStimmenTableLayout.kennungVorStimmeingabeRendered}" headerText="#{stimmeingabenGruppeStimmenTableLayout.kennungVorStimmeingabeHeader}" styleClass="ui-dt-td-kennung ui-dt-td-kennung-01 ui-dt-td-rowgroup-toggler">
            <h:outputText value="#{stimmeingabeGruppeStimmen.stimmeingabeListenstimmeKennung}" />
        </p:column>

        <p:column rendered="#{stimmeingabenGruppeStimmenTableLayout.bezeichnungRendered}" headerText="#{stimmeingabenGruppeStimmenTableLayout.bezeichnungHeader}" styleClass="ui-dt-td-bezeichnung #{stimmeingabenGruppeStimmenTableLayout.kennungVorStimmeingabeRendered ? '' : 'ui-dt-td-rowgroup-toggler'}">
            <h:outputText rendered="#{stimmeingabeGruppeStimmen ne stimmeingabeGruppeStimmenGesamt}" value="#{stimmeingabeGruppeStimmen.stimmeingabeListenstimmeBezeichnung}" />
            <h:outputText rendered="#{stimmeingabeGruppeStimmen eq stimmeingabeGruppeStimmenGesamt}" value="#{erfassenView.getStimmeingabenGruppeStimmenGroupFooter(stimmeingabeGruppeStimmen)}" />
        </p:column>

        <p:column rendered="#{stimmeingabenGruppeStimmenTableLayout.anzahlListenstimmeVergleichRendered}" headerText="#{stimmeingabenGruppeStimmenTableLayout.anzahlListenstimmeVergleichHeader}" styleClass="ui-dt-td-anzahl ui-dt-td-numeric">
            <e:outputLong rendered="#{stimmeingabeGruppeStimmen.hasAnzahlListenstimmeVergleich()}" value="#{stimmeingabeGruppeStimmen.anzahlListenstimmeVergleich}" />
            <h:outputText rendered="#{not stimmeingabeGruppeStimmen.hasAnzahlListenstimmeVergleich()}" value="#{stimmeingabeGruppeStimmen.getAnzahlEingabeListenstimmeVergleichOrDefault(erfassenView.stimmeingabeAnzeigenAnzahlDefault)}" styleClass="ui-dt-c-numeric" />
        </p:column>

        <p:column rendered="#{stimmeingabenGruppeStimmenTableLayout.anzahlListenstimmeRendered}" headerText="#{stimmeingabenGruppeStimmenTableLayout.anzahlListenstimmeHeader}" styleClass="ui-dt-td-anzahl ui-dt-td-numeric">
            <ui:fragment rendered="#{stimmeingabeGruppeStimmen.anzahlEingabeListenstimmeRendered}">
                <ui:param name="stimmeingabeGruppeStimmenDisabled" value="#{stimmeingabenGruppeStimmenReadonly}" />

                <div id="#{erfassenView.getStimmeingabeBezugId(stimmeingabeGruppeStimmen.stimmeingabeListenstimme)}" class="ui-datatable-plausi-fehler-target">
                    <ui:fragment rendered="#{stimmeingabeGruppeStimmenDisabled}">
                        <e:outputLong rendered="#{stimmeingabeGruppeStimmen.hasAnzahlListenstimme()}" value="#{stimmeingabeGruppeStimmen.anzahlListenstimme}" />
                        <h:outputText rendered="#{not stimmeingabeGruppeStimmen.hasAnzahlListenstimme()}" value="#{stimmeingabeGruppeStimmen.getAnzahlEingabeListenstimmeOrDefault(erfassenView.stimmeingabeAnzeigenAnzahlDefault)}" styleClass="ui-dt-c-numeric" />
                    </ui:fragment>

                    <e:inputNumberKeyboard rendered="#{not stimmeingabeGruppeStimmenDisabled}" autocomplete="false" tabindex="#{anzahlEingabeColGruppeStimmenTabIndex}" value="#{stimmeingabeGruppeStimmen.anzahlEingabeListenstimme}" styleClass="#{stimmeingabeGruppeStimmen.stimmeingabeListenstimmeStyleClass}" />
                </div>
            </ui:fragment>
        </p:column>

        <p:column rendered="#{stimmeingabenGruppeStimmenTableLayout.kennungNachStimmeingabeRendered}" headerText="#{stimmeingabenGruppeStimmenTableLayout.kennungNachStimmeingabeHeader}" styleClass="ui-dt-td-kennung ui-dt-td-kennung-02">
            <h:outputText value="#{stimmeingabeGruppeStimmen.stimmeingabeListenstimmeKennung}" />
        </p:column>
    </p:dataTable>

    <br />
</ui:composition>
