#ftl encoding="utf-8" /> <#--- Custom library for laying out result's within a grid using Funnelback. @author: Robert Prib @release_date: 5 September 2016 @version: v1.0 @usage <@base_controller.IfDefCGIEquals name="resultsView" value="grid"> <@base_controller.ResultsColumns> <@base_controller.ResultsColumnsIsOpen>
${base_controller.resultsColumnsNumber}
${base_controller.resultsColumnsIsLast}
${base_controller.resultsColumnsRank}
${base_controller.resultsColumnsIndex}
@param columnsNumber - set this column number as default column number
-->
<#macro ResultsColumns columnsNumber=2>
<#-- Define attributes -->
<#assign resultsColumnsNumber = columnsNumber in .namespace>
<#assign resultsColumnsIsLast = getResultsColumnsIsLast() in .namespace>
<#assign resultsColumnsRank = getResultsColumnsRank() in .namespace>
<#assign resultsColumnsIndex = getResultsColumnsIndex() in .namespace>
<#nested>
#macro>
<#---
Returns if the current result is the last item to be displayed.
@requires ResultsColumns
@return boolean
-->
<#function getResultsColumnsIsLast>
<#return s.result.rank == response.resultPacket.resultsSummary.currEnd>
#function>
<#---
Returns current position of the result which takes into account the current start rank.
@requires ResultsColumns
@return number
-->
<#function getResultsColumnsRank>
<#return s.result.rank - response.resultPacket.resultsSummary.currStart>
#function>
<#---
Returns the number of columns set.
@requires ResultsColumns
@return number
-->
<#function getResultsColumnsNumber>
<#return .namespace.resultsColumnsNumber>
#function>
<#---
Returns the column set index.
@requires ResultsColumns
@return number
-->
<#function getResultsColumnsIndex>
<#return (.namespace.resultsColumnsRank / .namespace.resultsColumnsNumber)?floor + 1>
<#-- <#return 0> -->
#function>
<#---
Show the nested content if it is the start of a column.
@requires ResultsColumns
@return nested
-->
<#macro ResultsColumnsIsOpen>
<#if .namespace.resultsColumnsRank % .namespace.resultsColumnsNumber == 0>
<#nested>
#if>
#macro>
<#--
Shows the nested content if it is the end of a column
@requires ResultsColumns
@return nested
-->
<#macro ResultsColumnsIsClosed>
<#if (.namespace.resultsColumnsRank + 1) % .namespace.resultsColumnsNumber == 0 || .namespace.resultsColumnsIsLast>
<#nested>
#if>
#macro>
#escape>