846421a9631a5c64007578f212915b507ddf7c0a
[MojoFacets.git] / lib / MojoFacets / Data.pm
1 package MojoFacets::Data;
2
3 use strict;
4 use warnings;
5
6 use base 'Mojolicious::Controller';
7
8 use Data::Dump qw(dump);
9 use File::Slurp;
10 use JSON;
11
12 our $data;
13
14 sub _data {
15         my $self = shift;
16
17         # we could use Mojo::JSON here, but it's too slow
18         $data ||= from_json read_file $self->app->home->rel_file( 'data/bibpsi.js' );
19 }
20
21
22 sub stats {
23     my $self = shift;
24
25         $self->_data;
26
27         my $stats;
28
29         foreach my $e ( @{ $data->{items} } ) {
30                 foreach my $n ( keys %$e ) {
31                         $stats->{column}->{$n}->{count}++;
32                         $stats->{column}->{$n}->{number}++ if $e->{$n} =~ m/[-+]?([0-9]*\.[0-9]+|[0-9]+)/;
33                 }
34         }
35
36         $self->app->log->debug( 'stats', dump($stats) );
37     # Render template "example/welcome.html.ep" with message
38     $self->render(
39                 message => 'Welcome to the Mojolicious Web Framework!',
40                 stats => $stats,
41         );
42 }
43
44 1;