filter console
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 14 Jul 2005 07:10:58 +0000 (07:10 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 14 Jul 2005 07:10:58 +0000 (07:10 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@1178 dcc99617-32d9-48b4-a31d-7c20da2025e4

Evergreen/staff_client/chrome/content/evergreen/util/error.js
Evergreen/staff_client/chrome/content/evergreen/util/filter_console.xul [new file with mode: 0644]
Evergreen/staff_client/chrome/content/evergreen/util/spawn_win.js
Evergreen/staff_client/chrome/locale/en-US/evergreen/OpenILS.properties

index 522f58d..3713908 100644 (file)
@@ -4,6 +4,7 @@ var consoleService = Components.classes['@mozilla.org/consoleservice;1']
        .getService(Components.interfaces.nsIConsoleService);
 
 var consoleDump = true;
+var debugDump = true;
 var arg_dump_full = false;
 
 var sdump_levels = {
@@ -13,6 +14,8 @@ var sdump_levels = {
        'D_TRACE' :  true,
        'D_TRACE_ENTER' :  false,
        'D_TRACE_EXIT' :  false,
+       'D_TIMEOUT' :  true,
+       'D_FILTER' : true,
 
        'D_CLAM' : false,
        'D_PAGED_TREE' : false,
@@ -46,13 +49,47 @@ var sdump_levels = {
 
 };
 
+var sdump_last_time = new Date();
+
+function filter_console_init(p) {
+       sdump('D_FILTER',arg_dump(arguments,{0:true}));
+
+       var filterConsoleListener = {
+               observe: function( msg ) {
+                       try {
+                               p.observe_msg( msg );
+                       } catch(E) {
+                               alert(E);
+                       }
+               },
+               QueryInterface: function (iid) {
+                       if (!iid.equals(Components.interfaces.nsIConsoleListener) &&
+                               !iid.equals(Components.interfaces.nsISupports)) {
+                                       throw Components.results.NS_ERROR_NO_INTERFACE;
+                       }
+                       return this;
+               }
+       };
+       try {
+               consoleService.registerListener(filterConsoleListener); 
+       } catch(E) {
+               alert(E);
+       }
+
+       sdump('D_TRACE_EXIT',arg_dump(arguments));
+}
+
 function sdump(level,msg) {
        try {
+               var now = new Date();
+               var message = now.valueOf() + '\tdelta = ' + (now.valueOf() - sdump_last_time.valueOf()) + '\n' + level + '\n' + msg;
                if (sdump_levels['D_NONE']) return;
                if (sdump_levels[level]||sdump_levels['D_ALL']) {
-                       debug(level + ': ' + msg);
+                       sdump_last_time = now;
+                       if (debugDump)
+                               debug(message);
                        if (consoleDump)
-                               consoleService.logStringMessage(level + ': ' + msg);
+                               consoleService.logStringMessage(message);
                }
        } catch(E) {
                dump('Calling sdump but ' + E + '\n');
diff --git a/Evergreen/staff_client/chrome/content/evergreen/util/filter_console.xul b/Evergreen/staff_client/chrome/content/evergreen/util/filter_console.xul
new file mode 100644 (file)
index 0000000..cec1119
--- /dev/null
@@ -0,0 +1,165 @@
+<?xml version="1.0"?>
+<!-- Application: Evergreen Staff Client -->
+<!-- Screen: About -->
+
+<!-- Stylesheets -->
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/evergreen.css" type="text/css"?>
+
+<window id="filter_console_win" 
+       onload="try { my_init(); } catch(E) { alert(E); }"
+       xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+       <script>mw.sdump('D_TRACE','Loading filter_console.xul\n');</script>
+
+       <script>
+       <![CDATA[
+
+               var rows; var containing; var not_containing;
+
+               function my_init() {
+
+                       rows = document.getElementById('filter_console_grid_rows');
+                       containing = document.getElementById('filter_console_containing');
+                       not_containing = document.getElementById('filter_console_not_containing');
+                       
+                       mw.filter_console_init( {'observe_msg':observe_msg} );
+                       build_sdump_menu();
+               }
+
+               function build_sdump_menu() {
+                       try {
+                               var mp = document.getElementById('fcmp');
+                               for (var i in mw.sdump_levels) {
+                                       var m = document.createElement( 'menuitem' );
+                                       mp.appendChild(m);
+                                       m.setAttribute('type','checkbox');
+                                       m.setAttribute('label',i);
+                                       m.setAttribute('checked',mw.sdump_levels[i]);
+                                       m.setAttribute('oncommand',
+                                               "mw.sdump_levels."+i+"=!mw.sdump_levels."+i+
+                                               "; this.setAttribute('checked',mw.sdump_levels."+i+");");
+                               }
+                       } catch(E) {
+                               alert(E);
+                       }
+               }
+
+               function observe_msg(msg) {
+
+                       try {
+                               var row = document.createElement('row');
+                               rows.appendChild(row);
+
+                               var hbox = document.createElement('hbox');
+                               row.appendChild(hbox);
+                               hbox.flex = 1;
+
+                               var tb = document.createElement('textbox');
+                               hbox.appendChild(tb);
+                               tb.setAttribute('multiline','true');
+                               tb.setAttribute('rows','5');
+                               tb.setAttribute('flex','1');
+                               tb.setAttribute('value',msg.message);
+
+                       } catch(E) { dump(E) }
+               }
+
+               function test_filter(msg) {
+                       var pass = true;
+                       var c_array = containing.value.split(' ');
+                       var nc_array = not_containing.value.split(' ');
+                       for (var i = 0; i < c_array.length; i++) {
+                               var term = c_array[i];
+                               if (term != '' && term != null && term != undefined)
+                                       if (! msg.match( term ) )
+                                               pass = false;
+                       }
+                       for (var i = 0; i < nc_array.length; i++) {
+                               var term = nc_array[i];
+                               if (term != '' && term != null && term != undefined)
+                                       if (msg.match( term ) )
+                                               pass = false;
+                       }
+                       return pass;
+               }
+
+               function clear_rows(prune) {
+                       var delete_these = [];
+                       for (var i = 0; i < rows.childNodes.length; i++) {
+                               var row = rows.childNodes[i];
+                               var tb = row.firstChild.firstChild;
+                               var delete_me = ! test_filter(tb.value);
+                               if (!prune) delete_me = true;
+                               if (delete_me) delete_these.push( row ); 
+                       }
+                       var row; while (row = delete_these.pop()) { rows.removeChild(row); }
+               }
+
+               function hide_rows() {
+                       for (var i = 0; i < rows.childNodes.length; i++) {
+                               var row = rows.childNodes[i];
+                               var tb = row.firstChild.firstChild;
+                               row.hidden = ! test_filter(tb.value);
+                       }
+               }
+
+               function calc_delta() {
+                       var first;
+                       var last;
+                       for (var i = 0; i < rows.childNodes.length; i++) {
+                               var row = rows.childNodes[i];
+                               if (! row.hidden ) {
+                                       var tb = row.firstChild.firstChild;
+                                       if (!first) first = parseInt( tb.value.split(' ')[0] );
+                                       last = parseInt( tb.value.split(' ')[0] );
+                               }
+                       }
+                       document.getElementById('fc_calc_delta_label').setAttribute('value',last-first);
+               }
+
+       ]]>
+       </script>
+
+       <popupset>
+               <menupopup id="fcmp" position="after_start">
+               </menupopup>
+       </popupset>
+
+       <vbox id="filter_console_vbox" flex="1">
+               <groupbox id="filter_console_groupbox" orient="vertical" flex="1">
+                       <caption id="fcgbc" label="Filterable Javascript Console"/>
+                       <grid id="filter_console_nav_grid">
+                               <columns id="fcnvc"><column id="fcnvc1"/><column id="fcnvc2" flex="1"/></columns>
+                               <rows id="fcnvr">
+                                       <row id="fcnvr1">
+                                               <label id="fcgbhb1l" value="Containing:" class="text_right" accesskey="o" control="filter_console_containing"/>
+                                               <textbox id="filter_console_containing" flex="1"/>
+                                       </row>
+                                       <row id="fcnvr2">
+                                               <label id="fcgbhb1l" value="Not Containing:" class="text_right" accesskey="N" control="filter_console_not_containing"/>
+                                               <textbox id="filter_console_not_containing" flex="1"/>
+                                       </row>
+                                       <row id="fcnvr3">
+                                               <spacer id="fcnvr3s1"/>
+                                               <hbox id="fcnvr3hb1" flex="1">
+                                                       <button id="fc_sdump_levels" popup="fcmp" label="Set SDUMP Logging" accesskey="S"/>
+                                                       <button id="fc_filter_view" label="View with Filters" accesskey="V" oncommand="hide_rows();"/>
+                                                       <button id="fc_calc_delta" label="Delta (Last-1st sdump)" accesskey="D" oncommand="calc_delta();"/>
+                                                       <label id="fc_calc_delta_label" />
+                                                       <spacer id="fcnvr3hb1s1" flex="1"/>
+                                                       <button id="fc_filter_prune" label="Prune Hidden" accesskey="P" oncommand="clear_rows(true);"/>
+                                                       <button id="fc_clear" label="Clear" accesskey="C" oncommand="clear_rows(false);"/>
+                                               </hbox>
+                                       </row>
+                               </rows>
+                       </grid>
+                       <grid id="filter_console_grid" flex="1" style="overflow: auto;">
+                               <columns id="fcgc"><column id="fcgc1" flex="1"/></columns>
+                               <rows id="filter_console_grid_rows"/>
+                       </grid>
+               </groupbox>
+       </vbox>
+
+</window>
+
index 86cd205..9a839a5 100644 (file)
@@ -240,3 +240,8 @@ function spawn_javascript_shell(d,placement,place,passthru_params,clone) {
        var chrome = 'chrome://evergreen/content/util/shell.html';
        return spawn_interface(d,placement,place,chrome,getString('javascript_shell_label'),passthru_params,clone);
 }
+
+function spawn_filter_console(d,placement,place,passthru_params,clone) {
+       var chrome = 'chrome://evergreen/content/util/filter_console.xul';
+       return spawn_interface(d,placement,place,chrome,getString('filter_console_label'),passthru_params,clone);
+}
index 6cc58a6..c7caeab 100644 (file)
@@ -19,6 +19,7 @@ z39_50_import_interface_label=Z39.50 IMPORT
 javascript_console_label=CONSOLE
 javascript_shell_label=JS SHELL
 xuleditor_label=XUL TEST
+filter_console_label=FCONSOLE
 
 retrieving.record=Retrieving...