]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/util/error.js
tweaks
[working/Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / util / error.js
1 sdump('D_TRACE',"Loading error.js\n");
2
3 var consoleService = Components.classes['@mozilla.org/consoleservice;1']
4         .getService(Components.interfaces.nsIConsoleService);
5
6 var consoleDump = true;
7 var debugDump = true;
8 var arg_dump_full = false;
9
10 var sdump_levels = {
11         'D_NONE' : false,
12         'D_ALL' : false,
13         'D_ERROR' : true,
14         'D_TRACE' :  false,
15         'D_TRACE_ENTER' :  false,
16         'D_TRACE_EXIT' :  false,
17         'D_TIMEOUT' :  false,
18         'D_FILTER' : false,
19         'D_CONSTRUCTOR' : false,
20         'D_FIREFOX' : true,
21
22         'D_CLAM' : false,
23         'D_PAGED_TREE' : false,
24         'D_GRID_LIST' : false,
25         'D_HTML_TABLE' : false,
26         'D_TAB' : false,
27
28         'D_AUTH' : false,
29
30         'D_OPAC' : false,
31
32         'D_PATRON_SEARCH' : false,
33         'D_PATRON_SEARCH_FORM' : false,
34         'D_PATRON_SEARCH_RESULTS' : false,
35
36         'D_PATRON_DISPLAY' : false,
37         'D_PATRON_DISPLAY_STATUS' : false,
38         'D_PATRON_DISPLAY_CONTACT' : false,
39
40         'D_PATRON_ITEMS' : false,
41         'D_PATRON_CHECKOUT_ITEMS' : false,
42         'D_PATRON_HOLDS' : false,
43         'D_PATRON_BILLS' : false,
44
45         'D_CHECKIN' : true,
46         'D_CHECKIN_ITEMS' : false,
47
48         'D_CAT' : false,
49
50         'D_PATRON_UTILS' : false,
51         'D_CIRC_UTILS' : false,
52
53         'D_EXPLODE' : false,
54         'D_FM_UTILS' : false,
55         'D_PRINT' : false,
56         'D_SES' : true,
57         'D_SES_FUNC' : false,
58         'D_SPAWN' : false,
59         'D_STRING' : false,
60         'D_UTIL' : false,
61         'D_WIN' : false,
62         'D_WIDGETS' : false
63
64 };
65
66 var sdump_last_time = new Date();
67
68 function filter_console_init(p) {
69         sdump('D_FILTER',arg_dump(arguments,{0:true}));
70
71         var filterConsoleListener = {
72                 observe: function( msg ) {
73                         try {
74                                 p.observe_msg( msg );
75                         } catch(E) {
76                                 alert(E);
77                         }
78                 },
79                 QueryInterface: function (iid) {
80                         if (!iid.equals(Components.interfaces.nsIConsoleListener) &&
81                                 !iid.equals(Components.interfaces.nsISupports)) {
82                                         throw Components.results.NS_ERROR_NO_INTERFACE;
83                         }
84                         return this;
85                 }
86         };
87         try {
88                 consoleService.registerListener(filterConsoleListener); 
89         } catch(E) {
90                 alert(E);
91         }
92
93         sdump('D_TRACE_EXIT',arg_dump(arguments));
94 }
95
96 function sdump(level,msg) {
97         try {
98                 var now = new Date();
99                 var message = now.valueOf() + '\tdelta = ' + (now.valueOf() - sdump_last_time.valueOf()) + '\n' + level + '\n' + msg;
100                 if (sdump_levels['D_NONE']) return;
101                 if (sdump_levels[level]||sdump_levels['D_ALL']) {
102                         sdump_last_time = now;
103                         if (debugDump)
104                                 debug(message);
105                         if (consoleDump)
106                                 consoleService.logStringMessage(message);
107                 }
108         } catch(E) {
109                 dump('Calling sdump but ' + E + '\n');
110         }
111 }
112
113 function arg_dump(args,dump_these) {
114         var s = '*>*>*> Called function ';
115         try {
116                 if (!dump_these)
117                         dump_these = {};
118                 s += args.callee.toString().match(/\w+/g)[1] + ' : ';
119                 for (var i = 0; i < args.length; i++)
120                         s += typeof(args[i]) + ' ';
121                 s += '\n';
122                 for (var i = 0; i < args.length; i++)
123                         if (dump_these[i]) {
124
125                                 var arg = args[i];
126                                 //dump('dump_these[i] = ' + dump_these[i] + '  arg = ' + arg + '\n');
127
128                                 if (typeof(dump_these[i])=='string') {
129
130                                         if (dump_these[i].slice(0,1) == '.') {
131                                                 var cmd = 'arg' + dump_these[i];
132                                                 var result;
133                                                 try {
134                                                         result = eval( cmd );
135                                                 } catch(E) {
136                                                         result = cmd + ' ==> ' + E;
137                                                 }
138                                                 s += '\targ #' + i + ': ' + cmd + ' = ' + result;
139                                         } else {
140                                                 var result;
141                                                 try {
142                                                         result = eval( dump_these[i] );
143                                                 } catch(E) {
144                                                         result = dump_these[i] + ' ==> ' + E;
145                                                 }
146                                                 s += '\targ #' + i + ': ' + result;
147                                         }
148
149                                 } else {
150                                         s += '\targ #' + i + ' = ';
151                                         try {
152                                                 s += js2JSON( arg );
153                                         } catch(E) {
154                                                 s += arg;
155                                         }
156                                 }
157
158                                 s += '\n';
159                                 if (arg_dump_full)
160                                         s += 'Definition: ' + args.callee.toString() + '\n';
161
162                         }
163                 return s;
164         } catch(E) {
165                 return s + '\nDEBUG ME: ' + js2JSON(E) + '\n';
166         }
167 }
168
169 function handle_error(E,annoy) {
170         var s = '';
171         if (instanceOf(E,ex)) {
172                 s += E.err_msg();
173                 //s += '\n\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n';
174                 //s += 'This error was anticipated.\n\n';
175                 //s += js2JSON(E).substr(0,200) + '...\n\n';
176                 if (snd_bad) snd_bad();
177         } else {
178                 s += '\n\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n';
179                 s += 'This is a bug that we will fix later.\n\n';
180                 s += js2JSON(E).substr(0,200) + '\n\n';
181                 if (snd_really_bad) snd_really_bad();
182         }
183         sdump('D_ERROR',s);
184         if (annoy)
185                 s_alert(s);
186         else
187                 alert(s);
188 }
189