/[SQLSession]/trunk/share/web/templates/fragments/queries
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/share/web/templates/fragments/queries

Parent Directory Parent Directory | Revision Log Revision Log


Revision 101 - (show annotations)
Fri Feb 16 22:50:55 2007 UTC (17 years, 3 months ago) by dpavlin
File size: 3825 byte(s)
added pretty print option, some comments and cleaned up some cargo cult cruft
1 <%args>
2 $on_database => undef
3 $created_on => undef
4 $order
5 $reformat => 0
6 </%args>
7 <%init>
8 my $queries = SQLSession::Model::QueryCollection->new();
9
10 my $edit = Jifty->web->current_user->role('edit');
11
12 #use Data::Dump qw/dump/;
13 #warn "current_user = ", dump( Jifty->web->current_user );
14 #warn "edit = $edit";
15
16 $queries->unlimit;
17 $queries->limit( column => 'on_database', value => $on_database ) if ( $on_database );
18 $queries->limit( column => 'created_on', operator => 'STARTSWITH', value => $created_on ) if ( $created_on );
19 $queries->order_by( column => $order, order => 'asc' );
20
21 #warn $queries->build_select_query,$/;
22
23 ###
24 ### sort by
25 ###
26
27 my $sort_label = {
28 name => 'Query name',
29 created_on => 'Creation date',
30 owner => 'Creator',
31 };
32
33 my $sort_menu = Jifty::Web::Menu->new( label => 'Sort by: ' . $sort_label->{$order} );
34 foreach my $c ( qw/name created_on owner/ ) {
35 #next if ($c eq $order);
36 $sort_menu->child( $c,
37 active => $c eq $order,
38 link => Jifty->web->link(
39 label => $sort_label->{$c},
40 onclick => {
41 replace_with => '/fragments/queries',
42 args => {
43 order => $c,
44 },
45 },
46 ),
47 );
48 }
49
50 ###
51 ### date filter
52 ###
53
54 my $date_menu = Jifty::Web::Menu->new( label => 'Date filter' . ( $created_on ? ": $created_on" : '' ) );
55 $date_menu->child( 'clear',
56 link => Jifty->web->link(
57 label => 'clear',
58 onclick => {
59 replace_with => '/fragments/queries',
60 args => {
61 created_on => '',
62 },
63 },
64 ),
65 ) if ($created_on);
66
67 # select created_on,count(date(created_on)) from queries group by date(created_on) order by created_on;
68 my $date_coll = SQLSession::Model::QueryCollection->new( results_are_readable => 1 );
69 my $created_on_date = $date_coll->column( function => 'date(created_on)', column => 'date' );
70 my $count = $date_coll->column( function => 'count(date(created_on))', column => 'count' );
71 $date_coll->group_by( function => $created_on_date );
72 $date_coll->order_by( column => 'date', order => 'DESC' );
73 $date_coll->unlimit;
74 $date_coll->limit( column => 'on_database', value => $on_database ) if ( $on_database );
75
76 #warn "## ", $date_coll->build_select_query;
77
78 my $dates = 0;
79
80 while (my $q = $date_coll->next) {
81 my $date = $q->{values}->{date} || die "no date?";
82 my $count = $q->{values}->{count} || die "no count?";
83 $date_menu->child( $date,
84 active => $created_on && $created_on eq $date ? 1 : 0,
85 link => Jifty->web->link(
86 label => "$date ($count)",
87 onclick => {
88 replace_with => '/fragments/queries',
89 args => {
90 created_on => $date,
91 },
92 },
93 ),
94 );
95
96 $dates++; # why is this different from $date_coll->count ?
97 }
98
99 my $u;
100 if ($reformat) {
101 use SQLSession::Utils;
102 $u = Jifty->app_class('Utils');
103 }
104
105 </%init>
106
107 <div class="sort">
108 <% $sort_menu->render_as_context_menu %>
109 % if ( $dates > 0 ) {
110 <% $date_menu->render_as_context_menu %>
111 % }
112 <ul class="context_menu">
113 <% Jifty->web->link(
114 label => $reformat ? 'Original formatting' : 'Pretty print SQL',
115 onclick => {
116 replace_with => '/fragments/queries',
117 args => {
118 reformat => $reformat ? 0 : 1,
119 },
120 },
121 ) %>
122 </ul>
123 </div>
124
125 <dl style="clear: left;">
126 % $queries->goto_first_item;
127 % while (my $q = $queries->next) {
128 <dt><% Jifty->web->tangent(
129 url => '/sql/' . $q->id,
130 label => $q->name,
131 ) %>
132
133 <span class="database-name">
134 <% $q->on_database->name %>
135 |
136 <% defined($q->owner->name) ? $q->owner->name : '?' %>
137 |
138 <% $q->created_on->ymd . ' ' . $q->created_on->hms %>
139
140 <span class="database-schema">
141 <%perl>
142 my $name = $q->on_database->dsn;
143 $name =~ s/^.*dbname=//;
144 $m->out("<a href=\"/static/spy/$name/index.html\" target=\"_spy\">$name shema</a>");
145 </%perl>
146 </span>
147
148 </span>
149
150 </dt>
151 <dd>
152 % if ($q->note) {
153 <div class="sql-note"><% $q->note %></div>
154 % }
155 % my $sql = $q->sql_query;
156 % $sql = $u->reformat_sql( $sql ) if ($reformat);
157 <pre class="sql"><% $sql %></pre>
158 </dd>
159 % }
160 </dl>

  ViewVC Help
Powered by ViewVC 1.1.26