use eval_console for items and facets
[MojoFacets.git] / templates / data / facet.html.ep
index e0fb78b..9038396 100644 (file)
@@ -1,29 +1,99 @@
 % layout 'ui';
 
-<%#= dumper $facet %>
-
 <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' %>
 
 <%= include 'sorting' %>
 
 <ul id=facet>
+% my $max_facets = $ENV{MAX_FACETS} ||= 10000;
+% my $facet_nr  = 0;
+% my $all_values = param('all_values');
+% $max_facets = $facet_count if $all_values;
 % foreach my $n ( @$facet_names ) {
+%  if ( $facet_nr++ == $max_facets ) {
+<div class=alert>
+First <a title="config MAX_FACETS" href="/config"><%= $max_facets %></a> shown
+&middot;
+<a href="<%= url_for()->query( name => $name, all_values => 1 ) %>">Show all <%= $facet_count %></a>
+</div>
+%  }
+%  if ( $facet_nr > $max_facets && ! $checked->{$n} ) {
+%    next;
+%  }
 <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' : '' %>>
+%  if ( defined $facet->{$n} ) {
+<%= $n %><span style="color:white">;</span><span class="count"><%= $facet->{$n} %></span>
+%  } else {
 <%= $n %>
+%  }
 </label>
-<span class="count"><%= $facet->{$n} %></span>
 % }
 </ul>
 
 <input type=submit value="Filter <%= $name %>">
+<input type=text name=_permanent>
 
 </form>
 
+<form id=eval method=post>
+<input type=hidden name=name value="<%= $name %>">
+<div style="float: right">
+Eval code on each facet <tt>$value</tt> and <tt>$count</tt>
+<pre>
+$out->{sum} += $value * $count;
+$out->{sum}->{ $checked ? 'on' : 'off' } += $count;
+$checked = 1 if $count > 10;
+</pre>
+</div>
+% if ( my $out = stash('out') ) {
+<pre class=debug><%= dumper $out %></pre>
+% }
+<textarea name=code style="width: 100%">
+<%= param('code') %>
+</textarea>
+<input type=submit value="Eval on facet values">
+<input id=close name=close  type=button value="Close" style="float: right">
+</form>
 
+% if ( $#$facet_names < 5000 ) {
 <script type="text/javascript" src="/facet_graph.js"></script>
+% }
+<script type="text/javascript">
+$(document).ready( function(){
+       console.debug('check alert');
+       var $a = $('.alert');
+       if ( $a.length ) {
+               $('.middle').html( $a.html() );
+       }
+
+       $('a#console').show();
+       
+});
+</script>
+
+% if ( $#$facet_names < 100 ) {
+<pre class=debug><%#= dumper $facet %></pre>
+% }
+
+<script type="text/javascript" src="/js/eval_console.js"></script>
+