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