mirror of https://github.com/apache/lucene.git
SOLR-2399: make verbose analysis the default
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1149189 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f6d85278ca
commit
b90300e4b4
|
@ -39,6 +39,11 @@ pre
|
|||
text-align: left;
|
||||
}
|
||||
|
||||
abbr
|
||||
{
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
ul
|
||||
{
|
||||
list-style: none;
|
||||
|
@ -110,7 +115,7 @@ ul
|
|||
{
|
||||
border: 1px solid #c0c0c0;
|
||||
min-height: 600px;
|
||||
min-width:750px;
|
||||
min-width: 750px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
|
@ -753,10 +758,36 @@ pre.syntax .tex .formula
|
|||
|
||||
/* analysis */
|
||||
|
||||
#content #analysis .settings
|
||||
#content #analysis-holder
|
||||
{
|
||||
background-image: url( ../img/div.gif );
|
||||
background-position: 50% 0;
|
||||
background-repeat: repeat-y;
|
||||
}
|
||||
|
||||
#content #analysis #field-analysis
|
||||
{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#content #analysis #field-analysis .content
|
||||
{
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
#content #analysis .settings-holder
|
||||
{
|
||||
clear: both;
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
#content #analysis .settings
|
||||
{
|
||||
background-color: #fff;
|
||||
border-top: 1px solid #fafafa;
|
||||
border-bottom: 1px solid #fafafa;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
#content #analysis .settings select.loader
|
||||
|
@ -779,7 +810,7 @@ pre.syntax .tex .formula
|
|||
#content #analysis .settings div
|
||||
{
|
||||
float: right;
|
||||
width: 49%;
|
||||
width: 47%;
|
||||
}
|
||||
|
||||
#content #analysis .settings button
|
||||
|
@ -787,6 +818,32 @@ pre.syntax .tex .formula
|
|||
float: right;
|
||||
}
|
||||
|
||||
#content #analysis .settings button.loader
|
||||
{
|
||||
background-position: 2px 50%;
|
||||
padding-left: 21px;
|
||||
}
|
||||
|
||||
#content #analysis .settings .verbose_output
|
||||
{
|
||||
float: left;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
#content #analysis .settings .verbose_output a
|
||||
{
|
||||
background-image: url( ../img/ico/ui-check-box-uncheck.png );
|
||||
background-position: 0 50%;
|
||||
color: #999;
|
||||
display: block;
|
||||
padding-left: 21px;
|
||||
}
|
||||
|
||||
#content #analysis .settings .verbose_output.active a
|
||||
{
|
||||
background-image: url( ../img/ico/ui-check-box.png );
|
||||
}
|
||||
|
||||
#content #analysis .index label,
|
||||
#content #analysis .query label
|
||||
{
|
||||
|
@ -804,7 +861,7 @@ pre.syntax .tex .formula
|
|||
{
|
||||
float: left;
|
||||
margin-right: 0.5%;
|
||||
min-width: 49%;
|
||||
min-width: 47%;
|
||||
max-width: 99%;
|
||||
}
|
||||
|
||||
|
@ -812,7 +869,7 @@ pre.syntax .tex .formula
|
|||
{
|
||||
float: right;
|
||||
margin-left: 0.5%;
|
||||
min-width: 49%;
|
||||
min-width: 47%;
|
||||
max-width: 99%;
|
||||
}
|
||||
|
||||
|
@ -829,117 +886,135 @@ pre.syntax .tex .formula
|
|||
padding-left: 35px;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result h2
|
||||
#content #analysis #analysis-result
|
||||
{
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result h2 .verbose_output
|
||||
#content #analysis #analysis-result .index,
|
||||
#content #analysis #analysis-result .query
|
||||
{
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
top: 5px;
|
||||
background-color: #fff;
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result h2 .verbose_output a
|
||||
#content #analysis #analysis-result table
|
||||
{
|
||||
background-image: url( ../img/ico/ui-check-box-uncheck.png );
|
||||
background-position: 0 50%;
|
||||
color: #999;
|
||||
display: block;
|
||||
padding-left: 21px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result.verbose_output h2 .verbose_output a
|
||||
#content #analysis #analysis-result td
|
||||
{
|
||||
background-image: url( ../img/ico/ui-check-box.png );
|
||||
color: #080;
|
||||
vertical-align: top;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .index,
|
||||
#content #analysis .analysis-result .query
|
||||
#content #analysis #analysis-result td.part.analyzer div,
|
||||
#content #analysis #analysis-result td.part.spacer .holder,
|
||||
#content #analysis #analysis-result td td td
|
||||
{
|
||||
margin-bottom: 10px;
|
||||
padding-top: 1px;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row
|
||||
{
|
||||
border-top: 1px solid #f0f0f0;
|
||||
margin-top: 10px;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row:first-child
|
||||
{
|
||||
border-top: 0;
|
||||
margin-top: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row .analyzer
|
||||
{
|
||||
color: #c0c0c0;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row:hover .analyzer
|
||||
{
|
||||
color: #333;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row table tr.verbose_output
|
||||
#content #analysis #analysis-result td.legend,
|
||||
#content #analysis #analysis-result td.data tr.verbose_output
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result.verbose_output .row table tr.verbose_output
|
||||
#content #analysis #analysis-result.verbose_output td.legend
|
||||
{
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
#content #analysis #analysis-result.verbose_output td.data tr.verbose_output
|
||||
{
|
||||
display: table-row;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row table th,
|
||||
#content #analysis .analysis-result .row table td
|
||||
#content #analysis #analysis-result .match
|
||||
{
|
||||
border-top: 1px solid #f0f0f0;
|
||||
vertical-align: top;
|
||||
background-color: #e9eff7;
|
||||
background-color: #f2f2ff;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row table th
|
||||
#content #analysis #analysis-result td.part
|
||||
{
|
||||
background-color: #f8f8f8;
|
||||
color: #999;
|
||||
padding: 2px;
|
||||
padding-bottom: 0;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row table th abbr
|
||||
#content #analysis #analysis-result td.part.analyzer div
|
||||
{
|
||||
border: 0;
|
||||
cursor: help;
|
||||
border-right: 1px solid #f0f0f0;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row table td
|
||||
#content #analysis #analysis-result td.part.analyzer abbr
|
||||
{
|
||||
border-left: 1px solid #dcdcdc;
|
||||
color: #c0c0c0;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row table td div
|
||||
#content #analysis #analysis-result td.part.legend .holder,
|
||||
#content #analysis #analysis-result td.part.data .holder
|
||||
{
|
||||
border-top: 1px solid #f0f0f0;
|
||||
display: block;
|
||||
padding: 1px 2px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
border-right: 1px solid #c0c0c0;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row table td div.empty
|
||||
#content #analysis #analysis-result td.part.legend td
|
||||
{
|
||||
color: #c0c0c0;
|
||||
}
|
||||
|
||||
#content #analysis #analysis-result td.part.legend .holder
|
||||
{
|
||||
border-right-color: #f0f0f0;
|
||||
}
|
||||
|
||||
#content #analysis #analysis-result td.part.data:last-child .holder
|
||||
{
|
||||
padding-right: 0;
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
#content #analysis #analysis-result td.details
|
||||
{
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
border-left: 1px solid #f0f0f0;
|
||||
border-right: 1px solid #f0f0f0;
|
||||
}
|
||||
|
||||
#content #analysis #analysis-result td.details:first-child
|
||||
{
|
||||
padding-left: 0;
|
||||
border-left: 0;
|
||||
}
|
||||
|
||||
#content #analysis #analysis-result td.details:last-child
|
||||
{
|
||||
padding-right: 0;
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
#content #analysis #analysis-result td.details tr.empty td
|
||||
{
|
||||
color: #f0f0f0;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row table td div.match
|
||||
#content #analysis #analysis-result td.details tr.raw_bytes td
|
||||
{
|
||||
background-color: #e9eff7;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
|
||||
#content #analysis .analysis-result .row table td div:first-child
|
||||
#content #analysis #analysis-result .part table table td
|
||||
{
|
||||
border-top: 1px solid #f0f0f0;
|
||||
}
|
||||
|
||||
#content #analysis #analysis-result .part table table tr:first-child td
|
||||
{
|
||||
border-top: 0;
|
||||
}
|
||||
|
|
|
@ -14,6 +14,16 @@ var loader = {
|
|||
|
||||
};
|
||||
|
||||
Number.prototype.esc = function()
|
||||
{
|
||||
return new String( this ).esc();
|
||||
}
|
||||
|
||||
String.prototype.esc = function()
|
||||
{
|
||||
return this.replace( /</g, '<' ).replace( />/g, '>' );
|
||||
}
|
||||
|
||||
var sammy = $.sammy
|
||||
(
|
||||
function()
|
||||
|
@ -712,7 +722,7 @@ var sammy = $.sammy
|
|||
|
||||
for( var key in response.levels )
|
||||
{
|
||||
var level = response.levels[key];
|
||||
var level = response.levels[key].esc();
|
||||
loglevel += '<li class="' + level + '"><a>' + level + '</a></li>' + "\n";
|
||||
}
|
||||
|
||||
|
@ -754,8 +764,8 @@ var sammy = $.sammy
|
|||
logger_content += '<li class="jstree-leaf">';
|
||||
logger_content += '<ins class="jstree-icon"> </ins>';
|
||||
logger_content += '<a class="trigger ' + classes.join( ' ' ) + '" ' + "\n" +
|
||||
'title="' + logger_name + '"><span>' + "\n" +
|
||||
logger_name.split( '.' ).pop() + "\n" +
|
||||
'title="' + logger_name.esc() + '"><span>' + "\n" +
|
||||
logger_name.split( '.' ).pop().esc() + "\n" +
|
||||
'</span></a>';
|
||||
|
||||
logger_content += loglevel
|
||||
|
@ -800,7 +810,7 @@ var sammy = $.sammy
|
|||
function( index, element )
|
||||
{
|
||||
var element = $( element );
|
||||
var effective_level = $( '.effective_level span', element ).html();
|
||||
var effective_level = $( '.effective_level span', element ).text();
|
||||
|
||||
element
|
||||
.css( 'z-index', 800 - index );
|
||||
|
@ -891,11 +901,11 @@ var sammy = $.sammy
|
|||
}
|
||||
|
||||
var item_content = '<li><dl class="' + item_class + '">' + "\n" +
|
||||
'<dt>' + displayed_key + '</dt>' + "\n";
|
||||
'<dt>' + displayed_key.esc() + '</dt>' + "\n";
|
||||
|
||||
for( var i in displayed_value )
|
||||
{
|
||||
item_content += '<dd>' + displayed_value[i] + '</dd>' + "\n";
|
||||
item_content += '<dd>' + displayed_value[i].esc() + '</dd>' + "\n";
|
||||
}
|
||||
|
||||
item_content += '</dl></li>';
|
||||
|
@ -965,8 +975,8 @@ var sammy = $.sammy
|
|||
var c = 0;
|
||||
for( var i = 1; i < threadDumpData.length; i += 2 )
|
||||
{
|
||||
var state = threadDumpData[i].state;
|
||||
var name = '<a><span>' + threadDumpData[i].name + '</span></a>';
|
||||
var state = threadDumpData[i].state.esc();
|
||||
var name = '<a><span>' + threadDumpData[i].name.esc() + '</span></a>';
|
||||
|
||||
var classes = [state];
|
||||
var details = '';
|
||||
|
@ -979,7 +989,7 @@ var sammy = $.sammy
|
|||
if( threadDumpData[i].lock )
|
||||
{
|
||||
classes.push( 'lock' );
|
||||
name += "\n" + '<p title="Waiting on">' + threadDumpData[i].lock + '</p>';
|
||||
name += "\n" + '<p title="Waiting on">' + threadDumpData[i].lock.esc() + '</p>';
|
||||
}
|
||||
|
||||
if( threadDumpData[i].stackTrace && 0 !== threadDumpData[i].stackTrace.length )
|
||||
|
@ -987,8 +997,10 @@ var sammy = $.sammy
|
|||
classes.push( 'stacktrace' );
|
||||
|
||||
var stack_trace = threadDumpData[i].stackTrace
|
||||
.join( '</li><li>' )
|
||||
.replace( /\(/g, '​(' );
|
||||
.join( '###' )
|
||||
.esc()
|
||||
.replace( /\(/g, '​(' )
|
||||
.replace( /###/g, '</li><li>' );
|
||||
|
||||
name += '<div>' + "\n"
|
||||
+ '<ul>' + "\n"
|
||||
|
@ -1000,10 +1012,10 @@ var sammy = $.sammy
|
|||
var item = '<tr class="' + classes.join( ' ' ) +'">' + "\n"
|
||||
|
||||
+ '<td class="ico" title="' + state +'"><span>' + state +'</span></td>' + "\n"
|
||||
+ '<td class="id">' + threadDumpData[i].id + '</td>' + "\n"
|
||||
+ '<td class="id">' + threadDumpData[i].id.esc() + '</td>' + "\n"
|
||||
+ '<td class="name">' + name + '</td>' + "\n"
|
||||
+ '<td class="time">' + threadDumpData[i].cpuTime + '</td>' + "\n"
|
||||
+ '<td class="time">' + threadDumpData[i].userTime + '</td>' + "\n"
|
||||
+ '<td class="time">' + threadDumpData[i].cpuTime.esc() + '</td>' + "\n"
|
||||
+ '<td class="time">' + threadDumpData[i].userTime.esc() + '</td>' + "\n"
|
||||
|
||||
+ '</tr>';
|
||||
|
||||
|
@ -3402,6 +3414,8 @@ var sammy = $.sammy
|
|||
|
||||
var analysis_element = $( '#analysis', content_element );
|
||||
var analysis_form = $( 'form', analysis_element );
|
||||
var analysis_result = $( '#analysis-result', analysis_element );
|
||||
analysis_result.hide();
|
||||
|
||||
$.ajax
|
||||
(
|
||||
|
@ -3465,10 +3479,56 @@ var sammy = $.sammy
|
|||
}
|
||||
}
|
||||
);
|
||||
|
||||
$( '.verbose_output a', analysis_element )
|
||||
.die( 'click' )
|
||||
.live
|
||||
(
|
||||
'click',
|
||||
function( event )
|
||||
{
|
||||
$( this ).parent()
|
||||
.toggleClass( 'active' );
|
||||
|
||||
analysis_result
|
||||
.toggleClass( 'verbose_output' );
|
||||
|
||||
check_empty_spacer();
|
||||
}
|
||||
);
|
||||
|
||||
var analysis_result = $( '.analysis-result', analysis_element );
|
||||
analysis_result_tpl = analysis_result.clone();
|
||||
analysis_result.remove();
|
||||
var check_empty_spacer = function()
|
||||
{
|
||||
var spacer_holder = $( 'td.part.data.spacer .holder', analysis_result );
|
||||
|
||||
if( 0 === spacer_holder.size() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var verbose_output = analysis_result.hasClass( 'verbose_output' );
|
||||
|
||||
spacer_holder
|
||||
.each
|
||||
(
|
||||
function( index, element )
|
||||
{
|
||||
element = $( element );
|
||||
|
||||
if( verbose_output )
|
||||
{
|
||||
var cell = element.parent();
|
||||
element.height( cell.height() );
|
||||
}
|
||||
else
|
||||
{
|
||||
element.removeAttr( 'style' );
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
var button = $( 'button', analysis_form )
|
||||
|
||||
analysis_form
|
||||
.ajaxForm
|
||||
|
@ -3478,10 +3538,8 @@ var sammy = $.sammy
|
|||
dataType : 'json',
|
||||
beforeSubmit : function( array, form, options )
|
||||
{
|
||||
//loader
|
||||
|
||||
$( '.analysis-result', analysis_element )
|
||||
.remove();
|
||||
loader.show( button );
|
||||
button.attr( 'disabled', true );
|
||||
|
||||
array.push( { name: 'analysis.showmatch', value: 'true' } );
|
||||
|
||||
|
@ -3491,6 +3549,10 @@ var sammy = $.sammy
|
|||
},
|
||||
success : function( response, status_text, xhr, form )
|
||||
{
|
||||
analysis_result
|
||||
.empty()
|
||||
.show();
|
||||
|
||||
for( var name in response.analysis.field_names )
|
||||
{
|
||||
build_analysis_table( 'name', name, response.analysis.field_names[name] );
|
||||
|
@ -3500,6 +3562,8 @@ var sammy = $.sammy
|
|||
{
|
||||
build_analysis_table( 'type', name, response.analysis.field_types[name] );
|
||||
}
|
||||
|
||||
check_empty_spacer();
|
||||
},
|
||||
error : function( xhr, text_status, error_thrown )
|
||||
{
|
||||
|
@ -3508,136 +3572,208 @@ var sammy = $.sammy
|
|||
},
|
||||
complete : function()
|
||||
{
|
||||
//loader
|
||||
loader.hide( $( 'button', analysis_form ) );
|
||||
button.removeAttr( 'disabled' );
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
var generate_class_name = function( type )
|
||||
{
|
||||
var classes = [type];
|
||||
if( 'text' !== type )
|
||||
{
|
||||
classes.push( 'verbose_output' );
|
||||
}
|
||||
return classes.join( ' ' );
|
||||
}
|
||||
|
||||
var build_analysis_table = function( field_or_name, name, analysis_data )
|
||||
{
|
||||
var analysis_result_data = analysis_result_tpl.clone();
|
||||
var content = [];
|
||||
|
||||
{
|
||||
for( var type in analysis_data )
|
||||
{
|
||||
var type_length = analysis_data[type].length;
|
||||
if( 0 !== type_length )
|
||||
{
|
||||
var type_content = '<div class="' + type + '">' + "\n";
|
||||
for( var i = 0; i < type_length; i += 2 )
|
||||
var global_elements_count = 0;
|
||||
for( var i = 0; i < analysis_data[type].length; i += 2 )
|
||||
{
|
||||
type_content += '<div class="row">' + "\n";
|
||||
|
||||
var analyzer_parts = analysis_data[type][i].split( '.' );
|
||||
var analyzer_parts_name = analyzer_parts.pop();
|
||||
var analyzer_parts_namespace = analyzer_parts.join( '.' ) + '.';
|
||||
|
||||
type_content += '<div class="analyzer" title="' + analysis_data[type][i] +'">' +
|
||||
analyzer_parts_name + '</div>' + "\n";
|
||||
|
||||
var raw_parts = {
|
||||
'position' : [],
|
||||
'text' : [],
|
||||
'type' : [],
|
||||
'start-end' : []
|
||||
};
|
||||
|
||||
for( var k in analysis_data[type][i+1] )
|
||||
if( 'string' === typeof analysis_data[type][i+1] )
|
||||
{
|
||||
var pos = analysis_data[type][i+1][k]['position'] - 1;
|
||||
var is_match = !!analysis_data[type][i+1][k]['match'];
|
||||
|
||||
if( 'undefined' === typeof raw_parts['text'][pos] )
|
||||
{
|
||||
raw_parts['position'][pos] = [];
|
||||
raw_parts['text'][pos] = [];
|
||||
raw_parts['type'][pos] = [];
|
||||
raw_parts['start-end'][pos] = [];
|
||||
|
||||
raw_parts['position'][pos].push( '<div>' + analysis_data[type][i+1][k]['position'] + '</div>' );
|
||||
}
|
||||
|
||||
raw_parts['text'][pos].push( '<div class="' + ( is_match ? 'match' : '' ) + '">' + analysis_data[type][i+1][k]['text'] + '</div>' );
|
||||
raw_parts['type'][pos].push( '<div>' + analysis_data[type][i+1][k]['type'] + '</div>' );
|
||||
raw_parts['start-end'][pos].push( '<div>' + analysis_data[type][i+1][k]['start'] + '–' + analysis_data[type][i+1][k]['end'] + '</div>' );
|
||||
analysis_data[type][i+1] = [{ 'text': analysis_data[type][i+1] }]
|
||||
}
|
||||
|
||||
var parts = {
|
||||
'position' : [],
|
||||
'text' : [],
|
||||
'type' : [],
|
||||
'start-end' : []
|
||||
};
|
||||
|
||||
for( var key in raw_parts )
|
||||
{
|
||||
var length = raw_parts[key].length;
|
||||
for( var j = 0; j < length; j++ )
|
||||
{
|
||||
if( raw_parts[key][j] )
|
||||
{
|
||||
parts[key].push( '<td>' + raw_parts[key][j].join( "\n" ) + '</td>' );
|
||||
}
|
||||
else
|
||||
{
|
||||
parts[key].push( '<td><div class="empty">∅</div></td>' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type_content += '<div class="result">' + "\n";
|
||||
type_content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
|
||||
|
||||
type_content += '<tr class="verbose_output">' + "\n";
|
||||
type_content += '<th><abbr title="Position">P</abbr></th>' + "\n";
|
||||
type_content += parts['position'].join( "\n" ) + "\n";
|
||||
type_content += '</tr>' + "\n";
|
||||
|
||||
type_content += '<tr>' + "\n";
|
||||
type_content += '<th><abbr title="Text">T</abbr></th>' + "\n";
|
||||
type_content += parts['text'].join( "\n" ) + "\n";
|
||||
type_content += '</tr>' + "\n";
|
||||
|
||||
type_content += '<tr class="verbose_output">' + "\n";
|
||||
type_content += '<th><abbr title="Type">T</abbr></th>' + "\n";
|
||||
type_content += parts['type'].join( "\n" ) + "\n";
|
||||
type_content += '</tr>' + "\n";
|
||||
|
||||
type_content += '<tr class="verbose_output">' + "\n";
|
||||
type_content += '<th><abbr title="Range (Start, End)">R</abbr></th>' + "\n";
|
||||
type_content += parts['start-end'].join( "\n" ) + "\n";
|
||||
type_content += '</tr>' + "\n";
|
||||
|
||||
type_content += '</table>' + "\n";
|
||||
type_content += '</div>' + "\n";
|
||||
|
||||
type_content += '</div>' + "\n";
|
||||
global_elements_count = Math.max( global_elements_count,
|
||||
analysis_data[type][i+1].length );
|
||||
}
|
||||
type_content += '</div>';
|
||||
content.push( $.trim( type_content ) );
|
||||
|
||||
var content = '<div class="' + type + '">' + "\n";
|
||||
content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
|
||||
|
||||
for( var i = 0; i < analysis_data[type].length; i += 2 )
|
||||
{
|
||||
var colspan = 1;
|
||||
var elements = analysis_data[type][i+1];
|
||||
var elements_count = global_elements_count;
|
||||
|
||||
if( !elements[0].positionHistory )
|
||||
{
|
||||
colspan = elements_count;
|
||||
elements_count = 1;
|
||||
}
|
||||
|
||||
var legend = [];
|
||||
for( var key in elements[0] )
|
||||
{
|
||||
var key_parts = key.split( '#' );
|
||||
var used_key = key_parts.pop();
|
||||
var short_key = used_key;
|
||||
|
||||
if( 1 === key_parts.length )
|
||||
{
|
||||
used_key = '<abbr title="' + key + '">' + used_key + '</abbr>';
|
||||
}
|
||||
|
||||
if( 'positionHistory' === short_key || 'match' === short_key )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
legend.push
|
||||
(
|
||||
'<tr class="' + generate_class_name( short_key ) + '">' +
|
||||
'<td>' + used_key + '</td>' +
|
||||
'</tr>'
|
||||
);
|
||||
}
|
||||
|
||||
content += '<tbody>' + "\n";
|
||||
content += '<tr class="step">' + "\n";
|
||||
|
||||
// analyzer
|
||||
var analyzer_name = analysis_data[type][i]
|
||||
.replace( /(\$1)+$/g, '' );
|
||||
|
||||
var analyzer_short = -1 !== analyzer_name.indexOf( '$' )
|
||||
? analyzer_name.split( '$' )[1]
|
||||
: analyzer_name.split( '.' ).pop();
|
||||
analyzer_short = analyzer_short.match( /[A-Z]/g ).join( '' );
|
||||
|
||||
content += '<td class="part analyzer"><div>' + "\n";
|
||||
content += '<abbr title="' + analysis_data[type][i] + '">' + "\n";
|
||||
content += analyzer_short + '</abbr></div></td>' + "\n";
|
||||
|
||||
// legend
|
||||
content += '<td class="part legend"><div class="holder">' + "\n";
|
||||
content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
|
||||
content += '<tr><td>' + "\n";
|
||||
content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
|
||||
content += legend.join( "\n" ) + "\n";
|
||||
content += '</table></td></tr></table></td>' + "\n";
|
||||
|
||||
// data
|
||||
var cell_content = '<td class="part data spacer" '
|
||||
+ ' colspan="' + colspan + '">'
|
||||
+ '<div class="holder"> </div>'
|
||||
+ '</td>';
|
||||
var cells = new Array( elements_count + 1 ).join( cell_content );
|
||||
content += cells + "\n";
|
||||
|
||||
content += '</tr>' + "\n";
|
||||
content += '</tbody>' + "\n";
|
||||
}
|
||||
content += '</table>' + "\n";
|
||||
content += '</div>' + "\n";
|
||||
|
||||
$( '.' + type, analysis_result )
|
||||
.remove();
|
||||
|
||||
analysis_result
|
||||
.append( content );
|
||||
|
||||
var analysis_result_type = $( '.' + type, analysis_result );
|
||||
|
||||
for( var i = 0; i < analysis_data[type].length; i += 2 )
|
||||
{
|
||||
for( var j = 0; j < analysis_data[type][i+1].length; j += 1 )
|
||||
{
|
||||
var pos = analysis_data[type][i+1][j].positionHistory
|
||||
? analysis_data[type][i+1][j].positionHistory[0]
|
||||
: 1;
|
||||
var selector = 'tr.step:eq(' + ( i / 2 ) +') '
|
||||
+ 'td.data:eq(' + ( pos - 1 ) + ') '
|
||||
+ '.holder';
|
||||
var cell = $( selector, analysis_result_type );
|
||||
|
||||
cell.parent()
|
||||
.removeClass( 'spacer' );
|
||||
|
||||
var table = $( 'table tr.details', cell );
|
||||
if( 0 === table.size() )
|
||||
{
|
||||
cell
|
||||
.html
|
||||
(
|
||||
'<table border="0" cellspacing="0" cellpadding="0">' +
|
||||
'<tr class="details"></tr></table>'
|
||||
);
|
||||
var table = $( 'table tr.details', cell );
|
||||
}
|
||||
|
||||
var tokens = [];
|
||||
for( var key in analysis_data[type][i+1][j] )
|
||||
{
|
||||
var short_key = key.split( '#' ).pop();
|
||||
|
||||
if( 'positionHistory' === short_key || 'match' === short_key )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var classes = [];
|
||||
classes.push( generate_class_name( short_key ) );
|
||||
|
||||
var data = analysis_data[type][i+1][j][key];
|
||||
if( 'object' === typeof data && data instanceof Array )
|
||||
{
|
||||
data = data.join( ' ' );
|
||||
}
|
||||
if( 'string' === typeof data )
|
||||
{
|
||||
data = data.esc();
|
||||
}
|
||||
|
||||
if( null === data || 0 === data.length )
|
||||
{
|
||||
classes.push( 'empty' );
|
||||
data = '∅';
|
||||
}
|
||||
|
||||
if( analysis_data[type][i+1][j].match &&
|
||||
( 'text' === short_key || 'raw_bytes' === short_key ) )
|
||||
{
|
||||
classes.push( 'match' );
|
||||
}
|
||||
|
||||
tokens.push
|
||||
(
|
||||
'<tr class="' + classes.join( ' ' ) + '">' +
|
||||
'<td>' + data + '</td>' +
|
||||
'</tr>'
|
||||
);
|
||||
}
|
||||
table
|
||||
.append
|
||||
(
|
||||
'<td class="details">' +
|
||||
'<table border="0" cellspacing="0" cellpadding="0">' +
|
||||
tokens.join( "\n" ) +
|
||||
'</table></td>'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$( 'h2 span', analysis_result_data )
|
||||
.html( field_or_name + ': ' + name );
|
||||
|
||||
$( 'h2 .verbose_output a', analysis_result_data )
|
||||
.die( 'click' )
|
||||
.live
|
||||
(
|
||||
'click',
|
||||
function( event )
|
||||
{
|
||||
$( this ).parents( '.block' )
|
||||
.toggleClass( 'verbose_output' );
|
||||
}
|
||||
);
|
||||
|
||||
$( '.analysis-result-content', analysis_result_data )
|
||||
.html( content.join( "\n" ) );
|
||||
|
||||
analysis_element.append( analysis_result_data );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4161,7 +4297,7 @@ var sammy = $.sammy
|
|||
for( var key in memory_data )
|
||||
{
|
||||
$( '.value.' + key, this )
|
||||
.html( memory_data[key] );
|
||||
.text( memory_data[key] );
|
||||
}
|
||||
|
||||
var data = {
|
||||
|
@ -4184,7 +4320,7 @@ var sammy = $.sammy
|
|||
var value_element = $( '.' + key + ' dd', this );
|
||||
|
||||
value_element
|
||||
.html( data[key] );
|
||||
.text( data[key] );
|
||||
|
||||
value_element.closest( 'li' )
|
||||
.show();
|
||||
|
@ -4200,7 +4336,7 @@ var sammy = $.sammy
|
|||
for( var key in commandLineArgs )
|
||||
{
|
||||
cmd_arg_element = cmd_arg_element.clone();
|
||||
cmd_arg_element.html( commandLineArgs[key] );
|
||||
cmd_arg_element.text( commandLineArgs[key] );
|
||||
|
||||
cmd_arg_key_element
|
||||
.after( cmd_arg_element );
|
||||
|
@ -4247,7 +4383,7 @@ var sammy = $.sammy
|
|||
var headline = $( '#memory h2 span', this );
|
||||
|
||||
headline
|
||||
.html( headline.html() + ' (' + memory_percentage + '%)' );
|
||||
.text( headline.html() + ' (' + memory_percentage + '%)' );
|
||||
|
||||
$( '#memory-bar .value', this )
|
||||
.each
|
||||
|
@ -4266,7 +4402,7 @@ var sammy = $.sammy
|
|||
byte_value = byte_value.toFixed( 2 ) + ' MB';
|
||||
|
||||
self
|
||||
.html( byte_value );
|
||||
.text( byte_value );
|
||||
}
|
||||
);
|
||||
},
|
||||
|
|
|
@ -6,70 +6,55 @@
|
|||
|
||||
</div>
|
||||
|
||||
<div class="block" id="field-analysis">
|
||||
|
||||
<h2><span>Field Analysis</span></h2>
|
||||
<div class="content">
|
||||
|
||||
<div class="message-container">
|
||||
<div class="message"></div>
|
||||
</div>
|
||||
|
||||
<form method="get">
|
||||
<div id="analysis-holder">
|
||||
|
||||
<div id="field-analysis">
|
||||
|
||||
<form method="get">
|
||||
|
||||
<ul class="clearfix">
|
||||
|
||||
<li class="index">
|
||||
|
||||
<label for="analysis_fieldvalue_index">Field Value (Index)</label>
|
||||
<textarea name="analysis.fieldvalue" id="analysis_fieldvalue_index"></textarea>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="query">
|
||||
|
||||
<label for="analysis_fieldvalue_query">Field Value (Query)</label>
|
||||
<textarea name="analysis.query" id="analysis_fieldvalue_query"></textarea>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="settings-holder clearfix">
|
||||
<div class="settings">
|
||||
|
||||
<label for="type_or_name">Analyse Fieldname / FieldType:</label>
|
||||
<select id="type_or_name"></select>
|
||||
|
||||
<div>
|
||||
|
||||
<button type="submit">Analyse Values</button>
|
||||
|
||||
<div class="verbose_output active">
|
||||
<a>Verbose Output</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</form>
|
||||
|
||||
<ul class="clearfix">
|
||||
|
||||
<li class="index">
|
||||
|
||||
<label for="analysis_fieldvalue_index">Field Value (Index)</label>
|
||||
<textarea name="analysis.fieldvalue" id="analysis_fieldvalue_index"></textarea>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="query">
|
||||
|
||||
<label for="analysis_fieldvalue_query">Field Value (Query)</label>
|
||||
<textarea name="analysis.query" id="analysis_fieldvalue_query"></textarea>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="settings clearfix">
|
||||
|
||||
<label for="type_or_name">Analyse Fieldname / FieldType:</label>
|
||||
<select id="type_or_name"></select>
|
||||
|
||||
<div>
|
||||
|
||||
<button type="submit">Analyse Values</button>
|
||||
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="block analysis-result">
|
||||
|
||||
<h2>
|
||||
<span>{headline}</span>
|
||||
<div class="verbose_output">
|
||||
<a>Verbose Output</a>
|
||||
</div>
|
||||
</h2>
|
||||
<div class="content">
|
||||
|
||||
<div class="message-container">
|
||||
<div class="message"></div>
|
||||
</div>
|
||||
|
||||
<div class="analysis-result-content clearfix">{content}</div>
|
||||
|
||||
</div>
|
||||
<div id="analysis-result" class="clearfix verbose_output"></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
Loading…
Reference in New Issue