#**
 *  Display facets based on ranges of values, AKA "Bukets"
 *  e.g.: ranges specified by &facet.range=
 *#

<h2 #annTitle("Facets generated by adding &facet.range= to the request")>
  Range Facets
</h2>

#foreach ($field in $response.response.facet_counts.facet_ranges)
  ## Hide facets without value
  #if($field.value.counts.size() > 0)
	#set($name = $field.key)
	#set($display = $name)
	#set($f = $field.value.counts)
	#set($start = $field.value.start)
	#set($end = $field.value.end)
	#set($gap = $field.value.gap)
	#set($before = $field.value.before)
	#set($after = $field.value.after)
	#display_facet_range($f, $display, $name, $start, $end, $gap, $before, $after)
  #end  ## end if has any values
#end    ## end for each facet range
