2 <!-- Application: Evergreen Staff Client -->
6 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
7 <?xml-stylesheet href="chrome://evergreen/skin/evergreen.css" type="text/css"?>
9 <window id="filter_console_win"
10 onload="try { my_init(); } catch(E) { alert(E); }"
11 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
13 <script>mw.sdump('D_TRACE','Loading filter_console.xul\n');</script>
18 var rows; var containing; var not_containing;
22 rows = document.getElementById('filter_console_grid_rows');
23 containing = document.getElementById('filter_console_containing');
24 not_containing = document.getElementById('filter_console_not_containing');
26 mw.filter_console_init( {'observe_msg':observe_msg} );
30 function build_sdump_menu() {
32 var mp = document.getElementById('fcmp');
33 for (var i in mw.sdump_levels) {
34 var m = document.createElement( 'menuitem' );
36 m.setAttribute('type','checkbox');
37 m.setAttribute('label',i);
38 m.setAttribute('checked',mw.sdump_levels[i]);
39 m.setAttribute('oncommand',
40 "mw.sdump_levels."+i+"=!mw.sdump_levels."+i+
41 "; this.setAttribute('checked',mw.sdump_levels."+i+");");
48 function observe_msg(msg) {
51 var row = document.createElement('row');
52 rows.appendChild(row);
54 var hbox = document.createElement('hbox');
55 row.appendChild(hbox);
58 var tb = document.createElement('textbox');
60 tb.setAttribute('multiline','true');
61 tb.setAttribute('readonly','true');
62 tb.setAttribute('rows','5');
63 tb.setAttribute('flex','1');
64 tb.setAttribute('value',msg.message);
66 } catch(E) { dump(E) }
69 function test_filter(msg) {
71 var c_array = containing.value.split(' ');
72 var nc_array = not_containing.value.split(' ');
73 for (var i = 0; i < c_array.length; i++) {
74 var term = c_array[i];
75 if (term != '' && term != null && term != undefined)
76 if (! msg.match( term ) )
79 for (var i = 0; i < nc_array.length; i++) {
80 var term = nc_array[i];
81 if (term != '' && term != null && term != undefined)
82 if (msg.match( term ) )
88 function clear_rows(prune) {
89 var delete_these = [];
90 for (var i = 0; i < rows.childNodes.length; i++) {
91 var row = rows.childNodes[i];
92 var tb = row.firstChild.firstChild;
93 var delete_me = ! test_filter(tb.value);
94 if (!prune) delete_me = true;
95 if (delete_me) delete_these.push( row );
97 var row; while (row = delete_these.pop()) { rows.removeChild(row); }
100 function hide_rows() {
101 for (var i = 0; i < rows.childNodes.length; i++) {
102 var row = rows.childNodes[i];
103 var tb = row.firstChild.firstChild;
104 row.hidden = ! test_filter(tb.value);
108 function calc_delta() {
111 for (var i = 0; i < rows.childNodes.length; i++) {
112 var row = rows.childNodes[i];
114 var tb = row.firstChild.firstChild;
115 if (!first) first = parseInt( tb.value.split(' ')[0] );
116 last = parseInt( tb.value.split(' ')[0] );
119 document.getElementById('fc_calc_delta_label').setAttribute('value',last-first);
126 <menupopup id="fcmp" position="after_start">
130 <vbox id="filter_console_vbox" flex="1">
131 <groupbox id="filter_console_groupbox" orient="vertical" flex="1">
132 <caption id="fcgbc" label="Filterable Javascript Console"/>
133 <grid id="filter_console_nav_grid">
134 <columns id="fcnvc"><column id="fcnvc1"/><column id="fcnvc2" flex="1"/></columns>
137 <label id="fcgbhb1l" value="Containing:" class="text_right" accesskey="o" control="filter_console_containing"/>
138 <textbox id="filter_console_containing" flex="1"/>
141 <label id="fcgbhb1l" value="Not Containing:" class="text_right" accesskey="N" control="filter_console_not_containing"/>
142 <textbox id="filter_console_not_containing" flex="1"/>
145 <spacer id="fcnvr3s1"/>
146 <hbox id="fcnvr3hb1" flex="1">
147 <button id="fc_sdump_levels" popup="fcmp" label="Set SDUMP Logging" accesskey="S"/>
148 <button id="fc_filter_view" label="View with Filters" accesskey="V" oncommand="hide_rows();"/>
149 <button id="fc_calc_delta" label="Delta (Last-1st sdump)" accesskey="D" oncommand="calc_delta();"/>
150 <label id="fc_calc_delta_label" />
151 <spacer id="fcnvr3hb1s1" flex="1"/>
152 <button id="fc_filter_prune" label="Prune Hidden" accesskey="P" oncommand="clear_rows(true);"/>
153 <button id="fc_clear" label="Clear" accesskey="C" oncommand="clear_rows(false);"/>
158 <grid id="filter_console_grid" flex="1" style="overflow: auto;">
159 <columns id="fcgc"><column id="fcgc1" flex="1"/></columns>
160 <rows id="filter_console_grid_rows"/>