load only MAX_FACETS facets, 10000 by default
[MojoFacets.git] / templates / data / facet.html.ep
index 8a9f89a..49c61ce 100644 (file)
@@ -1,43 +1,58 @@
-% layout 'default';
-
-<%#= dumper $facet %>
+% layout 'ui';
 
 <form method=post action=/data/filter >
 <input type=hidden name=filter_name value="<%= $name %>">
 <input type=submit value="Filter <%= $name %>">
+<span class=count>
+% my $checked_count = scalar keys %$checked;
+% my $facet_count = $#{ $facet_names } + 1;
+% if ( $checked_count ) {
+%  if ( $checked_count == $facet_count ) {
+<a id=checked-count href="<%= url_for->query( name => $name, all => 1 ) %>" title="reload all facets">all</a>
+%  } else {
+<a id=checked-count href="<%= url_for->query( name => $name, all => 0 ) %>" title="reload selected facets"><%= $checked_count %></a>
+%  }
+% } else {
+<span id=checked-count>0</span>
+% }
+<span id=facet-count title="total"><%= $facet_count %></span>
+</span>
+
+<%= include 'all_checkboxes' %>
 
-<ul>
+<%= include 'sorting' %>
+
+<ul id=facet>
+% my $max_facets = $ENV{MAX_FACETS} || 10000;
+% my $facet_nr  = 0;
 % foreach my $n ( @$facet_names ) {
+%  if ( $facet_nr++ > $max_facets ) {
+<div class=alert>
+To keep browser memory usage at sane level, only <%= $max_facets %> facets are loaded to browser
+</div>
+%    last;
+%  }
 <li>
 <label>
-<input type=checkbox name="filter_vals" value="<%= $n %>" <%= $checked->{$n} ? 'checked' : '' %>>
+<input type=checkbox name="filter_vals" value="<%= $n %>" <%= $checked->{$n} && defined $facet->{$n} ? 'checked' : '' %>>
 <%= $n %>
-<span class="count"><%= $facet->{$n} %></span>
 </label>
+%  if ( defined $facet->{$n} ) {
+<span class="count"><%= $facet->{$n} %></span>
+%  }
 % }
 </ul>
 
 <input type=submit value="Filter <%= $name %>">
+<input type=text name=_permanent>
 
 </form>
 
-
-sort:
-
-% if ( $sort eq 'c' ) {
-<b>count</b>
-% } else {
-<a href="<%= url_for->query( name => $name, sort => 'c' ) %>">count</a>
+% if ( $#$facet_names < 5000 ) {
+<script type="text/javascript" src="/facet_graph.js"></script>
 % }
 
-% if ( $sort eq 'a' ) {
-<b>ascending</b>
-% } else {
-<a href="<%= url_for->query( name => $name, sort => 'a' ) %>">asceding</a>
+% if ( $#$facet_names < 100 ) {
+<pre class=debug><%#= dumper $facet %></pre>
 % }
 
-% if ( $sort eq 'd' ) {
-<b>desceding</b>
-% } else {
-<a href="<%= url_for->query( name => $name, sort => 'd' ) %>">desceding</a>
-% }