eval code snippet on facet data facet-eval
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 26 Jun 2010 22:41:58 +0000 (00:41 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 26 Jun 2010 22:41:58 +0000 (00:41 +0200)
Using $out to generate results and $v for value and $c for count

lib/MojoFacets/Data.pm
templates/admin.html.ep
templates/data/facet.html.ep

index 4e842ed..3d1ac65 100644 (file)
@@ -932,6 +932,21 @@ sub facet {
                }
        }
 
+       if ( my $code = $self->param('code') ) {
+               my $out;
+               foreach my $v ( keys %$facet ) {
+                       my $c = $facet->{$v};
+                       eval $code;
+                       if ( $@ ) {
+                               $out = $@;
+                               warn "ERROR: $@\n$code\n";
+                               last;
+                       }
+               }
+               warn "out ",dump( $out );
+               $self->stash( out => $out );
+       }
+
 #      warn "# facet $name ",dump $facet;
 
        my $checked;
index e26dca0..5d01f8e 100644 (file)
@@ -19,6 +19,11 @@ items:
 <a id=code href="<%= url_for( controller => 'code', action => 'index', id => 0 ) %>">code</a>
 <a id=console href="#" style="display:none">console</a>
 
+% if ( my $id = stash('nytprof.id') ) {
+&middot;
+<a href="<%= url_for( controller => 'profile', action => 'index', id => $id ) %>">profile</a>
+% }
+
 <span class=middle>
 </span>
 
index 03f196c..10cca77 100644 (file)
@@ -55,6 +55,19 @@ First <a title="config MAX_FACETS" href="/config"><%= $max_facets %></a> shown
 
 </form>
 
+% if ( my $out = stash('out') ) {
+<pre class=debug><%= dumper $out %></pre>
+% }
+<form method=post>
+<input type=hidden name=name value="<%= $name %>">
+Eval code on each facet value and count:
+<tt>$out->{sum} += $v * $c</tt><br>
+<textarea name=code style="width: 100%">
+<%= param('code') %>
+</textarea>
+<input type=submit>
+</form>
+
 % if ( $#$facet_names < 5000 ) {
 <script type="text/javascript" src="/facet_graph.js"></script>
 % }