JavaScript-XRay
view release on metacpan or search on metacpan
lib/JavaScript/XRay.pm view on Meta::CPAN
sub _inject_js_css {
my ( $self, $html_ref ) = @_;
my ( $alias, $switches ) = ( $self->{alias}, $self->{switches} );
my $js_css = qq|<script><!--
var ${alias}_logging_on = true;
var ${alias}_doc = null;
var ${alias}_cont_div = null;
var ${alias}_last_div = null;
var ${alias}_count = 1;
var ${alias}_exec_count = [];
var ${alias}_date_start;
var ${alias}_time_start;
var ${alias}_pre_iframe_queue = [];
$self->{js_log}
function ${alias}( msg ) {
if ( !${alias}_logging_on ) return;
if ( ${alias}_doc == null) {
if ( ! ${alias}_init( "Initialized" ) ) {
${alias}_pre_iframe_queue.push(msg);
return;
}
else {
for( var x = 0; x < ${alias}_pre_iframe_queue.length; x++ ) {
${alias}_log( ${alias}_pre_iframe_queue[x] );
}
${alias}_pre_iframe_queue = [];
}
}
${alias}_log( msg );
}
function ${alias}_log ( msg ) {
// timing data
var ${alias}_date_now = new Date();
var ${alias}_time_since = ${alias}_date_now.getTime();
var ${alias}_elapsed_time =
( ${alias}_time_since - ${alias}_time_start );
var ${alias}_time = ${alias}_date_format( ${alias}_date_now );
var ${alias}_div = ${alias}_doc.createElement( 'DIV' );
${alias}_div.className = "${alias}_desc";
${alias}_doc.body.appendChild( ${alias}_div );
${alias}_cont_div.insertBefore(${alias}_div, ${alias}_last_div);
${alias}_div.innerHTML = "<span class='${alias}_loginfo'>[ "
+ ${alias}_count + ' - ' + ${alias}_time + ' - '
+ ${alias}_elapsed_time + "ms ]</span> " + msg;
${alias}_count++;
${alias}_last_div = ${alias}_div;
}
function ${alias}_init(init_msg) {
$self->{js_log_init}
${alias}_date_start = new Date();
${alias}_time_start = ${alias}_date_start.getTime();
if (!window.frames.${alias}_iframe) return;
${alias}_doc = window.frames.${alias}_iframe.document;
${alias}_doc.open();
${alias}_doc.write("<!DOCTYPE html PUBLIC -//W3C//DTD ");
${alias}_doc.write("XHTML 1.0 Transitional//EN ");
${alias}_doc.write(" http://www.w3.org/TR/xhtml1/DTD/");
${alias}_doc.write("xhtml1/DTD/xhtml1-transitional.dtd>\\n\\n");
${alias}_doc.write("<html><head><title>$PACKAGE v$VERSION");
${alias}_doc.write("</title>\\n");
${alias}_doc.write("</head>");
${alias}_doc.write("|;
$js_css .= $self->_css(1);
$js_css .= qq|");
${alias}_doc.write("<body style='");
${alias}_doc.write("background-color:white; margin: 2px'></body>\\n");
${alias}_doc.close();
${alias}_cont_div = ${alias}_doc.createElement( 'DIV' );
${alias}_doc.body.appendChild(${alias}_cont_div);
${alias}_last_div = ${alias}_doc.createElement( 'DIV' );
${alias}_last_div.className = "${alias}_desc";
${alias}_last_div.innerHTML = "<span class='${alias}_loginfo'>[ "
+ ${alias}_count
+ " - "
+ ${alias}_date_format( ${alias}_date_start )
+ " - 0ms ]</span> $PACKAGE " + init_msg;
${alias}_cont_div.appendChild(${alias}_last_div);
${alias}_count++;
return 1;
}
function ${alias}_alert_counts() {
var msg = "";
var sort_array = new Array;
for ( var key in ${alias}_exec_count ) sort_array.push( key );
sort_array.sort( ${alias}_exec_key_sort );
for( var x = 0; x < sort_array.length; x++ ) {
if ( ${alias}_exec_count[sort_array[x]] != 0 ) {
msg += sort_array[x] + " = " + ${alias}_exec_count[sort_array[x]] + "\\n";
}
}
alert(msg);
}
function ${alias}_exec_key_sort( a, b ) {
var x = ${alias}_exec_count[b];
var y = ${alias}_exec_count[a];
return ( ( x < y) ? -1 : ( (x > y) ? 1 : 0 ) );
}
function ${alias}_date_format ( date ) {
var ${alias}_day = date.getDate();
var ${alias}_month = date.getMonth() + 1;
var ${alias}_hours = date.getHours();
var ${alias}_min = date.getMinutes();
var ${alias}_sec = date.getSeconds();
var ${alias}_ampm = "AM";
if ( ${alias}_hours > 11 ) ${alias}_ampm = "PM";
if ( ${alias}_hours > 12 ) ${alias}_hours -= 12;
if ( ${alias}_hours == 0 ) ${alias}_hours = 12;
if ( ${alias}_min < 10 ) ${alias}_min = "0" + ${alias}_min;
if ( ${alias}_sec < 10 ) ${alias}_sec = "0" + ${alias}_sec;
return ${alias}_month + '/' + ${alias}_day + ' '
( run in 0.405 second using v1.01-cache-2.11-cpan-119454b85a5 )