$file =~ s/$data_dir\/*//;
push @files, $file;
} else {
- warn "IGNORE: $file\n";
+ #warn "IGNORE: $file\n";
}
}, $data_dir);
sub load {
my $self = shift;
+ my $path = $self->param('path') || $self->redirect_to( '/data/index' );
+
my @paths = $self->param('paths');
warn "# paths ", dump @paths;
+
+ foreach my $p ( keys %$loaded ) {
+ next if grep { /^\Q$p\E$/ } @paths;
+ warn "remove $p from memory\n";
+ delete $loaded->{$p};
+ }
+
$self->_load_path( $_ ) foreach @paths;
- my $path = $self->param('path') || $self->redirect_to( '/data/index' );
warn "# path $path\n";
$self->_load_path( $path );
warn "filter $name with ", scalar keys %$filtered_items, " items created\n";
}
-sub _data_items {
- my ( $self, $all ) = @_;
- my $data = $self->_loaded( 'data' );
-
- return @{ $data->{items} } if $all == 1;
-
- my $filters = $self->_current_filters;
- my $filter_value;
- foreach my $f ( keys %$filters ) {
- foreach my $n ( @{ $filters->{$f} } ) {
- $filter_value->{$f}->{$n} = 1;
- }
- }
- my @items = @{ $data->{items} };
- @items = grep {
- my $i = $_;
- my $pass = 1;
- foreach my $n ( keys %$filter_value ) {
- if ( ! exists $i->{$n} ) {
- if ( defined $filter_value->{$n}->{_missing} ) {
- $pass = 1;
- next;
- } else {
- $pass = 0;
- last;
- }
- }
- # and match any of values in element
- my $have_values = 0;
- foreach my $v ( @{ $i->{$n} } ) { # FIXME not array?
- $have_values ||= 1 if defined $filter_value->{$n}->{$v};
- }
- if ( ! $have_values ) {
- $pass = 0;
- last;
- }
- }
- $pass;
- } @items if $filter_value;
- return @items;
-}
-
sub _current_filters {
my $self = shift;
$current_filters->{ $_ } = $filters->{ $_ }
foreach (
grep { defined $filters->{ $_ } }
- @{ $self->_loaded('header') }
+ @{ $self->_loaded('columns') }
);
#warn "# current_filters ",dump($current_filters);
return $current_filters;
my $row = $data->{items}->[$i];
eval $code;
}
+ if ( my $description = $self->param('code_description') ) {
+ my $depends = $self->param('code_depends') || die "no code_depends?";
+ my $path = $self->app->home->rel_dir('public') . "/code/$depends.$description.pl";
+ write_file $path, $code;
+ warn "code $path ", -s $path, " bytes saved\n";
+ }
$code = '';
}
filters => $self->_current_filters,
code => $code,
cols_changed => $cols_changed,
+ code_depends =>
+ $self->param('code_depends') ||
+ join(',', grep { defined $cols_changed->{$_} && $cols_changed->{$_} == 1 } @columns ),
+ code_description =>
+ $self->param('code_description') ||
+ join(',', grep { defined $cols_changed->{$_} && $cols_changed->{$_} == 2 } @columns ),
);
}