Gtk2-Ex-GroupBy
view release on metacpan or search on metacpan
examples/group-by.pl view on Meta::CPAN
#!/usr/bin/perl -w
use strict;
use Gtk2 -init;
use Glib ':constants';
use Gtk2::Ex::GroupBy;
use Data::Dumper;
my $groupby = Gtk2::Ex::GroupBy->new;
$groupby->set_model({
'groupby' => [
[
'Product', 'Category'
],
[
'State', 'Country'
],
],
'formula' => [
[
{ field => 'Revenue', formula => 'SUM of'},
{ field => 'Expenses', formula => 'SUM of'},
{ field => 'Margin', formula => 'AVG of'},
{ field => 'Sales', formula => 'SUM of'},
],
[
{ field => 'Costs', formula => 'SUM of'},
{ field => 'Price', formula => 'AVG of'},
],
]
});
$groupby->signal_connect( 'changed' =>
sub {
#_make_sql($groupby->get_model);
}
);
$groupby->signal_connect( 'closed' =>
sub {
_make_sql($groupby->get_model, "my_table");
Gtk2->main_quit;
}
);
my $window = Gtk2::Window->new;
$window->signal_connect (destroy => sub { Gtk2->main_quit });
#$window->set_default_size(300, 400);
$window->add ($groupby->get_widget);
$window->show_all;
Gtk2->main;
sub _make_sql {
my ($model, $table) = @_;
print Dumper $model;
my @group;
my @formula;
foreach my $x (@{$model->{'groupby'}->[0]}) {
push @group, $x;
}
foreach my $x (@{$model->{'formula'}->[0]}) {
my $f = $x->{'formula'};
$f =~ s/ of$//;
push @formula, $f.'('.$x->{'field'}.')';
}
my $groupstr = join ',', @group;
my $formulastr = join ',', @formula;
print Dumper \@group;
print Dumper \@formula;
my $query = "select $groupstr,$formulastr from $table group by $groupstr"
if $groupstr;
print Dumper $query;
}
( run in 0.692 second using v1.01-cache-2.11-cpan-5837b0d9d2c )