DBIx-Knowledge
view release on metacpan or search on metacpan
lib/DBIx/Knowledge/Report.pm view on Meta::CPAN
use CGI::CRUD::TableIO;
use constant OK => 0;
$DBIx::Knowledge::Report::REPORT_SELECT_LIST_TABLE_NAME = 'dbix_knowledge_data_point';
my $potential_select_fields;
##at anyway to make this readonly?
my %potential_select_fields_by_id;
##at anyway to make this readonly?
my %potential_select_fields_by_order_legend;
my $title_field = {
FIELD_NAME => 'REPORT_TITLE',
INPUT_CONTROL_TYPE => 'TEXT',
SEARCH_CONTROL_TYPE => 'TEXT',
HEADING => 'Report title',
DATATYPE => 'CHAR',
REQUIRED => 'N',
INSERTABLE => 'Y',
SEARCHABLE => 'Y',
lib/DBIx/Knowledge/Report.pm view on Meta::CPAN
}
sub create_select_list
{
my ($potential_select_fields_in,$cache_list) = @_;
return 1 if $cache_list && $potential_select_fields;
$potential_select_fields = $potential_select_fields_in;
%potential_select_fields_by_id = ();
%potential_select_fields_by_order_legend = ();
@select_field_picklist = ();
@np_select_field_picklist = ();
@subtotal_field_picklist = ();
@np_subtotal_field_picklist = ();
map { $potential_select_fields_by_id{$_->{ID}} = $_ } @$potential_select_fields;
map { $potential_select_fields_by_order_legend{$_->{order_legend}} = $_ } @$potential_select_fields;
@select_field_picklist = map({ ID => $_->{ID}, MASK => "$_->{header} ($_->{order_legend})" },@$potential_select_fields);
map { push(@np_select_field_picklist,{ ID => $_->{ID}, MASK => ($_->{np_header} ? $_->{np_header} : $_->{header}) . ' ($_->{order_legend})' }) if $_->{np_allow} } @$potential_select_fields;
map { push(@subtotal_field_picklist,
{
ID => $_->{ID},
MASK => "$_->{header} ($_->{order_legend})"
}
)
unless $_->{group_by_expr}
}
reverse @$potential_select_fields;
push(@subtotal_field_picklist,{ ID => $DBIx::Knowledge::REPORT_TOTAL_KEY, MASK => 'Report grand total (GRANDTOT)' });
map { push(@np_subtotal_field_picklist,
{
ID => $_->{ID},
MASK => "$_->{header} ($_->{order_legend})"
}
)
if $_->{np_allow} && !$_->{group_by_expr}
}
reverse @$potential_select_fields;
push(@np_subtotal_field_picklist,{ ID => $DBIx::Knowledge::REPORT_TOTAL_KEY, MASK => 'Report grand total (GRANDTOT)' });
}
=pod
lib/DBIx/Knowledge/Report.pm view on Meta::CPAN
my $orderby_q = $q->{FORMAT}{ORDER_FIELD};
my @order_fields = ();
if (length($orderby_q))
{
foreach my $order_term (split(/\s*,\s*/,$orderby_q))
{
my $desc_needed = $order_term =~ s/\s+desc//i;
$order_term = uc($order_term);
##at should be done in validate_query()
($r->perror("Invalid term entered in 'Order by' sequence [$order_term], please go back and correct"),return undef)
unless exists($potential_select_fields_by_order_legend{$order_term});
my $term_id = $potential_select_fields_by_order_legend{$order_term};
($r->perror("'Ordered by' fields must be a subset of the 'Report on' fields [$order_term is not], please try again"),return undef)
unless exists($select_fields_q{$term_id->{ID}});
my %order_field = ( %{$term_id} );
$order_field{descending_order} = $desc_needed;
push(@order_fields,\%order_field) unless length($r->{np_uname}) && !$term_id->{np_allow};
}
}
my $result_limit = $q->{FORMAT}{RESULT_LIMIT};
( run in 1.113 second using v1.01-cache-2.11-cpan-49f99fa48dc )