foreach my $i ( 0 .. $#$items ) {
if ( defined $items->[$i]->{$name} ) {
- foreach my $v ( @{ $items->[$i]->{$name} } ) {
+ my $row = $items->[$i]->{$name};
+ $row = [ $row ] unless ref $row eq 'ARRAY'; # FIXME probably wrong place
+ foreach my $v ( @$row ) {
if ( defined $filter_hash->{ $v } ) {
$filtered_items->{$i}++;
}
# fix offset when changing limit
$offset = int( $offset / $limit ) * $limit;
+ if ( ! grep { /^\Q$order\E$/ } @columns ) {
+ $order = $columns[0];
+ $self->session( order => $order );
+ }
my $sorted = $self->_data_sorted_by( $order );
my @filter_names;
my $data = $self->_loaded('data');
my $code = $self->_param_scalar('code','');
- $code =~ s{\n+$}{}s;
+ $code =~ s{[\r\n]+$}{}s;
my $commit = $self->param('commit');
my $test = $self->param('test');
+ my $cols_changed;
+
if ( $code && ( $test || $commit ) ) {
# XXX find columns used in code snippet and show them to user
foreach my $column ( $code =~ m/\$row->{(.+?)}/g ) {
if ( $column =~ s/^(['"])// ) {
$column =~ s/$1$//;
}
+ $cols_changed->{$column}++;
next if grep { /$column/ } @columns;
+ $cols_changed->{$column}++;
unshift @columns, $column;
if ( $commit ) {
$self->session('columns', [ @columns ]);
my $row = $data->{items}->[$i];
eval $code;
}
+ $code = '';
}
my $sorted_items;
numeric => { map { $_, $self->_is_numeric($_) } @columns },
filters => $self->_current_filters,
code => $code,
+ cols_changed => $cols_changed,
);
}