<td>$max_time</td>
<td>$avg_time</td>
<td id="queries-most-frequent-waiting-examples-details-rank-$rank">
- <div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div>
+ <div id="query-a-$rank" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-a-$rank')"></i>$query</div>
$example
<!-- Examples collapse -->
<div id="queries-most-frequent-waiting-examples-rank-$rank" class="collapse">
<dl>
};
if ($normalyzed_info{$k}{count} > 1) {
+ my $idx = 1;
foreach my $d (sort {$b <=> $a} keys %{$normalyzed_info{$k}{samples}}) {
$query = &highlight_code($normalyzed_info{$k}{samples}{$d}{query});
my $details = "[ <b>Date:</b> $normalyzed_info{$k}{samples}{$d}{date}";
$details .= " - <b>Bind query:</b> yes" if ($normalyzed_info{$k}{samples}{$d}{bind});
$details .= " ]";
print $fh qq{
- <dt><div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div></dt>
+ <dt>
+ <div id="query-a-$rank-$idx" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-a-$rank-$idx')"></li>$query</div>
+ </dt>
<pre>$details</pre>
};
+ $idx++;
}
print $fh qq{
<td>$rank</td>
<td>$time</td>
<td id="queries-that-waited-most-examples-details-rank-$rank">
- <div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div>
+ <div id="query-b-$rank" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-b-$rank')"></i>$query</div>
<pre>$details</pre>
</td>
</tr>
<td>$max_size</td>
<td>$avg_size</td>
<td id="queries-generating-most-temporary-files-examples-details-rank-$rank">
- <div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div>
+ <div id="query-c-$rank" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-c-$rank')"></i>$query</div>
$example
<!-- Examples collapse -->
<div id="queries-generating-most-temporary-files-examples-rank-$rank" class="collapse">
};
my $k = $top_temporary[$i]->[0];
if ($normalyzed_info{$k}{count} > 1) {
+ my $idx = 1;
foreach my $d (sort {$b <=> $a} keys %{$normalyzed_info{$k}{samples}}) {
$query = &highlight_code($normalyzed_info{$k}{samples}{$d}{query});
my $details = "Duration: " . &convert_time($d) . "<br />";
$details .= "Application: $normalyzed_info{$k}{samples}{$d}{app}<br/>" if ($normalyzed_info{$k}{samples}{$d}{app});
$details .= "Bind query: yes<br/>" if ($normalyzed_info{$k}{samples}{$d}{bind});
print $fh qq{
- <dt><div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div></dt>
+ <dt>
+ <div id="query-c-$rank-$idx" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-c-$rank-$idx')"></i>$query</div>
+
+ </dt>
<pre>$details</pre>
};
+ $idx++
}
- print $fh qq{
+ print $fh qq{
</dl>
<p class="pull-right"><button type="button" class="btn btn-mini" data-toggle="collapse" data-target="#queries-generating-most-temporary-files-examples-rank-$rank">x Hide</button></p>
</div>
<td>$rank</td>
<td>$size</td>
<td id="queries-generating-largest-temporary-files-examples-details-rank-$rank">
- <div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div>
+ <div id="query-d-$rank" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-d-$rank')"></i>$query</div>
<pre>$details</pre>
</td>
</tr>
<tbody>
};
+ my $idx = 1;
for (my $i = 0 ; $i <= $#top_slowest ; $i++) {
my $rank = $i + 1;
my $duration = &convert_time($top_slowest[$i]->[0]);
<td>$rank</td>
<td>$duration</td>
<td id="slowest-individual-queries-examples-rank-$rank">
- <div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div>
+ <div id="query-d-$rank-$idx" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-d-$rank-$idx')"></i>$query</div>
<pre>$details</pre>
</td>
</tr>
};
+ $idx++;
}
if ($#top_slowest == -1) {
print $fh qq{<tr><td colspan="3">$NODATA</td></tr>};
<td>$max</td>
<td>$avg</td>
<td id="time-consuming-queries-examples-details-rank-$rank">
- <div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div>
+ <div id="query-e-$rank" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-e-$rank')"></i>$query</div>
<!-- Details collapse -->
<div id="time-consuming-queries-details-rank-$rank" class="collapse">
<h3>Times Reported <small>Time consuming queries #$rank</small></h3>
<dl>
};
+ my $idx = 1;
foreach my $d (sort {$b <=> $a} keys %{$normalyzed_info{$k}{samples}}) {
my $details = "[ <b>Date:</b> $normalyzed_info{$k}{samples}{$d}{date}";
$details .= " - <b>Duration:</b> " . &convert_time($d);
$details .= " ]";
$query = &highlight_code($normalyzed_info{$k}{samples}{$d}{query});
print $fh qq{
- <dt><div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div></dt>
+ <dt>
+ <div id="query-e-$rank-$idx" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-e-$rank-$idx')"></i>$query</div>
+ </dt>
<pre>$details</pre>
};
+ $idx++;
}
print $fh qq{
</dl>
<td>$max</td>
<td>$avg</td>
<td id="most-frequent-queries-examples-details-rank-$rank">
- <div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div>
+ <div id="query-f-$rank" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-f-$rank')"></i>$query</div>
<!-- Details collapse -->
<div id="most-frequent-queries-details-rank-$rank" class="collapse">
<h3>Times Reported <small>Time consuming queries #$rank</small></h3>
<dl>
};
+ my $idx = 1;
foreach my $d (sort {$b <=> $a} keys %{$normalyzed_info{$k}{samples}}) {
my $details = "[ <b>Date:</b> $normalyzed_info{$k}{samples}{$d}{date}";
$details .= " - <b>Duration:</b> " . &convert_time($d);
$details .= " ]";
$query = &highlight_code($normalyzed_info{$k}{samples}{$d}{query});
print $fh qq{
- <dt><div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div></dt>
+ <dt>
+ <div id="query-f-$rank-$idx" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-f-$rank-$idx')"></i>$query</div>
+ </dt>
<pre>$details</pre>
};
+ $idx++;
}
print $fh qq{
</dl>
</td>
<td>$duration</td>
<td id="normalized-slowest-queries-examples-details-rank-$rank">
- <div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div>
+ <div id="query-g-$rank" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-g-$rank')"></i>$query</div>
<!-- Details collapse -->
<div id="normalized-slowest-queries-details-rank-$rank" class="collapse">
<h3>Times Reported <small>Time consuming queries #$rank</small></h3>
<dl>
};
+ my $idx = 1;
foreach my $d (sort {$b <=> $a} keys %{$normalyzed_info{$k}{samples}}) {
my $details = "[ <b>Date:</b> $normalyzed_info{$k}{samples}{$d}{date}";
$details .= " - <b>Duration:</b> " . &convert_time($d);
$details .= " ]";
$query = &highlight_code($normalyzed_info{$k}{samples}{$d}{query});
print $fh qq{
- <dt><div class="sql sql-largesize" ondblclick="sql_format(this)">$query</div></dt>
+ <dt>
+ <div id="query-g-$rank-$idx" class="sql sql-largesize" ondblclick="sql_format(this)"><i class="icon-copy" onclick="sql_select('query-g-$rank-$idx')"></i>$query</div>
+ </dt>
<pre>$details</pre>
};
+ $idx++;
}
print $fh qq{
</dl>
WRFILE: pgbadger.js
/* <![CDATA[ */
+function sql_select (objid)
+{
+ var obj = document.getElementById( objid );
+ if (window.getSelection) {
+ var sel = window.getSelection();
+ sel.removeAllRanges();
+ var range = document.createRange();
+ range.selectNodeContents(obj);
+ sel.addRange(range);
+ } else if (document.selection) {
+ var textRange = document.body.createTextRange();
+ textRange.moveToElementText(obj);
+ textRange.select();
+ }
+}
+
+
function sql_format (obj)
{
if (obj.style == undefined || obj.style.whiteSpace == 'pre') {