track exact $cols_changed
[MojoFacets.git] / templates / data / items / table.html.ep
1 <table border=1>
2
3 <tr>
4 % my $commit = param('commit');
5 % foreach my $n ( @$columns ) {
6 % if ( $cols_changed->{$n} > 1 && ! $commit ) {
7 <th class=changed>
8 <%= $n %>
9 % } else {
10 <th>
11 % if ( $unique->{$n} ) {
12 <span title="unique">&#9997;</span>
13 % }
14 % if ( session('order') ne $n ) {
15 <a href="<%= url_for( action => 'order' )->query( order => $n, sort => 'a' ) %>"><%= $n %></a>
16 % } else {
17 <a href="<%= url_for( action => 'order' )->query( order => $n, sort => session('sort') eq 'a' ? 'd' : 'a' ) %>"><%= $n %></a>
18 <%== session('sort') eq 'a' ? '&uarr;' : '&darr;' %>
19 % }
20 <div class="col_opts">
21 <a title="filter by this facet" href="<%= url_for( action => 'facet' )->query( name => $n, all => 0 ) %>">
22 % if ( defined $filters->{$n} ) {
23 <%= $#{ $filters->{$n} } + 1 %></a>&nbsp;
24 <a title="show all values" href="<%= url_for( action => 'facet' )->query( name => $n, all => 1 ) %>">all
25 % } else {
26 filter
27 % }
28 </a>
29 </div>
30
31 % }
32 </th>
33 % }
34 </tr>
35
36 % foreach my $row ( @$sorted ) {
37 <tr title="<%= $row->{_row_id} %>">
38 % foreach my $col ( @$columns ) {
39 %  my $class = '';
40 %  $class .= ' numeric' if $numeric->{$col};
41 %  $class .= ' changed' if $cols_changed->{$col};
42 %  $class =~ s/^ / class="/ && $class =~ s/$/"/;
43 <td<%== $class %>>
44 %  if ( ref $row->{$col} eq 'ARRAY' ) {
45 %   my $last = $#{ $row->{$col} };
46 %   foreach ( 0 .. $last ) {
47 <%= $row->{$col}->[$_] %>
48 %    if ( $_ < $last ) {
49 <span class=d>&para;</span>
50 %    }
51 %   }
52 %  } elsif ( ref $row->{$col} ) {
53 <pre class=debug><%= dumper $row->{$col} %></pre>
54 %  } else {
55 <%= $row->{$col} %>
56 %  }
57 </td>
58 % } # columns
59 </tr>
60 % } # sorted
61
62 </table>
63 <form id=eval method=post style="<%= $code ? '' : 'display:none' %>">
64
65 % my $error = stash('eval_error');
66 % if ( $error ) {
67 <div class=error><%= $error %></div>
68 % }
69
70 % if ( $out ) {
71 <pre id=out><%= dumper $out %></pre>
72 % }
73
74 % my $rows = scalar split(/\n/,$code);
75 <textarea name=code rows=<%= $rows %>><%= $code %></textarea>
76 <input name=test   type=submit value="Test code">
77
78 % if ( param('test') ) {
79 <a href="">reload original</a>
80 %   if ( ! $error ) {
81 <input name=commit type=submit value="Commit changes" style="color:red">
82 %   }
83 % }
84
85 % if ( $code_depends ) {
86 <input name=code_depends type=hidden value="<%= $code_depends %>">
87 <tt><%= $code_depends %>.<input name=code_description type=text value="<%= $code_description %>">.pl</tt>
88 %  my $path = "$code_path/$code_depends.$code_description.pl";
89 %  if ( -e $path ) {
90 <input type=checkbox name=overwrite value=1 title="Overwrite old version of this code">
91 %  }
92 % }
93
94 <input id=close name=close  type=button value="Close" style="float: right">
95 </form>
96
97 <script type="text/javascript" src="/js/jquery.textarea_grow.js"></script>
98 <script type="text/javascript">
99
100 $(document).ready( function(){
101
102         $('form#eval textarea').textarea_grow();
103         $('input#close').click( function(){
104                 console.debug( 'close console' );
105                 $.post( document.location, { code: '' } );
106                 $(this).parent().hide();
107         });
108
109         var $out = $('pre#out');
110         if ( $out.height() > $(window).height() ) {
111                 $out.height( $(window).height() / 3 * 2 ).css({ overflow: 'auto' });
112         }
113
114         $('a#console').click( function() {
115                 console.debug('open console');
116                 var $f = $('form#eval');
117                 if ( $f.is(':visible') ) {
118                         $f.hide();
119                 } else {
120                         $f.show();
121                 }
122                 return false;
123         }).show();
124
125 });
126
127 </script>
128
129 <script type="text/javascript" src="/edit_table.js"></script>
130