From bea7ba556a7b1e83367b92ae520170729cc81551 Mon Sep 17 00:00:00 2001 From: miker Date: Thu, 28 Sep 2006 08:04:26 +0000 Subject: [PATCH] reporting stuff ... git-svn-id: svn://svn.open-ils.org/ILS/trunk@6245 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/examples/fm_IDL.xml | 5 +- .../examples/reporter-sql-builder-test.pl | 1 + .../perlmods/OpenILS/Reporter/SQLBuilder.pm | 71 +++++++++++++++++-- Open-ILS/src/sql/Pg/reporter-schema.sql | 3 + 4 files changed, 72 insertions(+), 8 deletions(-) diff --git a/Open-ILS/examples/fm_IDL.xml b/Open-ILS/examples/fm_IDL.xml index d3ef5a9993..e625bc3b2e 100644 --- a/Open-ILS/examples/fm_IDL.xml +++ b/Open-ILS/examples/fm_IDL.xml @@ -2183,10 +2183,13 @@ - + + + + diff --git a/Open-ILS/examples/reporter-sql-builder-test.pl b/Open-ILS/examples/reporter-sql-builder-test.pl index c388e1156b..36828b6c25 100755 --- a/Open-ILS/examples/reporter-sql-builder-test.pl +++ b/Open-ILS/examples/reporter-sql-builder-test.pl @@ -95,5 +95,6 @@ my $r = OpenILS::Reporter::SQLBuilder->new; $r->register_params( $params ); my $rs = $r->parse_report( $report ); +print "Column Labels: " . join(', ', $rs->column_label_list) . "\n"; print $rs->toSQL; diff --git a/Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm b/Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm index d3f1ff3d13..0532d32d3b 100644 --- a/Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm +++ b/Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm @@ -58,7 +58,10 @@ sub parse_report { ->set_from( $report->{from} ) ->set_where( $report->{where} ) ->set_having( $report->{having} ) - ->set_order_by( $report->{order_by} ); + ->set_order_by( $report->{order_by} ) + ->set_pivot_data( $report->{pivot_data} ) + ->set_pivot_label( $report->{pivot_label} ) + ->set_pivot_default( $report->{pivot_default} ); return $rs; } @@ -75,6 +78,42 @@ sub is_subquery { return $self->{_is_subquery}; } +sub pivot_data { + my $self = shift; + return $self->{_pivot_data}; +} + +sub pivot_label { + my $self = shift; + return $self->{_pivot_label}; +} + +sub pivot_default { + my $self = shift; + return $self->{_pivot_label}; +} + +sub set_pivot_default { + my $self = shift; + my $p = shift; + $self->{_pivot_default} = $p if (defined $p); + return $self; +} + +sub set_pivot_data { + my $self = shift; + my $p = shift; + $self->{_pivot_data} = $p if (defined $p); + return $self; +} + +sub set_pivot_label { + my $self = shift; + my $p = shift; + $self->{_pivot_label} = $p if (defined $p); + return $self; +} + sub set_subquery_alias { my $self = shift; my $alias = shift; @@ -147,6 +186,29 @@ sub set_order_by { return $self; } +sub column_label_list { + my $self = shift; + + my @labels; + push @labels, $self->resolve_param( $_->{_alias} ) for ( @{ $self->{_select} } ); + return @labels; +} + +sub group_by_list { + my $self = shift; + my $base = shift; + $base = 1 unless (defined $base); + + my $gcount = $base; + my @group_by; + for my $c ( @{ $self->{_select} } ) { + push @group_by, $gcount if (!$c->is_aggregate); + $gcount++; + } + + return @group_by; +} + sub toSQL { my $self = shift; @@ -162,12 +224,7 @@ sub toSQL { $sql .= " FROM\t" . $self->{_from}->toSQL . "\n" if ($self->{_from}); $sql .= " WHERE\t" . join("\n\tAND ", map { $_->toSQL } @{ $self->{_where} }) . "\n" if (@{ $self->{_where} }); - my $gcount = 1; - my @group_by; - for my $c ( @{ $self->{_select} } ) { - push @group_by, $gcount if (!$c->is_aggregate); - $gcount++; - } + my @group_by = $self->group_by_list; $sql .= ' GROUP BY ' . join(', ', @group_by) . "\n" if (@group_by); $sql .= " HAVING " . join("\n\tAND ", map { $_->toSQL } @{ $self->{_having} }) . "\n" if (@{ $self->{_having} }); diff --git a/Open-ILS/src/sql/Pg/reporter-schema.sql b/Open-ILS/src/sql/Pg/reporter-schema.sql index ca26e1c951..242158092e 100644 --- a/Open-ILS/src/sql/Pg/reporter-schema.sql +++ b/Open-ILS/src/sql/Pg/reporter-schema.sql @@ -77,6 +77,9 @@ CREATE TABLE reporter.schedule ( excel_format BOOL NOT NULL DEFAULT TRUE, html_format BOOL NOT NULL DEFAULT TRUE, csv_format BOOL NOT NULL DEFAULT TRUE, + chart_pie BOOL NOT NULL DEFAULT FALSE, + chart_bar BOOL NOT NULL DEFAULT FALSE, + chart_line BOOL NOT NULL DEFAULT FALSE, error_code INT, error_text TEXT ); -- 2.43.2