]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/util/error.js
debug stuff
[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 arg_dump_full = false;
8
9 var sdump_levels = {
10         'D_ERROR' : true,
11         'D_TRACE' :  true,
12         'D_TRACE_ENTER' :  false,
13         'D_TRACE_EXIT' :  true,
14
15         'D_CLAM' : false,
16         'D_PAGED_TREE' : true,
17         'D_TAB' : false,
18
19         'D_AUTH' : false,
20
21         'D_OPAC' : true,
22
23         'D_PATRON_SEARCH' : true,
24         'D_PATRON_SEARCH_FORM' : true,
25         'D_PATRON_SEARCH_RESULTS' : true,
26
27         'D_EXPLODE' : false,
28         'D_PRINT' : false,
29         'D_SES' : true,
30         'D_SPAWN' : true,
31         'D_STRING' : false,
32         'D_UTIL' : false,
33         'D_WIN' : false,
34         'D_WIDGETS' : true
35
36 };
37
38 function sdump(level,msg) {
39         try {
40                 if (sdump_levels[level]) {
41                         debug(level + ': ' + msg);
42                         if (consoleDump)
43                                 consoleService.logStringMessage(level + ': ' + msg);
44                 }
45         } catch(E) {}
46 }
47
48 function arg_dump(args,dump_these) {
49         var s = '*>*>*> Called function ';
50         try {
51                 if (!dump_these)
52                         dump_these = {};
53                 s += args.callee.toString().match(/\w+/g)[1] + ' : ';
54                 for (var i = 0; i < args.length; i++)
55                         s += typeof(args[i]) + ' ';
56                 s += '\n';
57                 for (var i = 0; i < args.length; i++)
58                         if (dump_these[i]) {
59
60                                 var arg = args[i];
61                                 //dump('dump_these[i] = ' + dump_these[i] + '  arg = ' + arg + '\n');
62
63                                 if (typeof(dump_these[i])=='string') {
64
65                                         if (dump_these[i].slice(0,1) == '.') {
66                                                 var cmd = 'arg' + dump_these[i];
67                                                 var result;
68                                                 try {
69                                                         result = eval( cmd );
70                                                 } catch(E) {
71                                                         result = cmd + ' ==> ' + E;
72                                                 }
73                                                 s += '\targ #' + i + ': ' + cmd + ' = ' + result;
74                                         } else {
75                                                 var result;
76                                                 try {
77                                                         result = eval( dump_these[i] );
78                                                 } catch(E) {
79                                                         result = dump_these[i] + ' ==> ' + E;
80                                                 }
81                                                 s += '\targ #' + i + ': ' + result;
82                                         }
83
84                                 } else {
85                                         s += '\targ #' + i + ' = ';
86                                         try {
87                                                 s += js2JSON( arg );
88                                         } catch(E) {
89                                                 s += arg;
90                                         }
91                                 }
92
93                                 s += '\n';
94                                 if (arg_dump_full)
95                                         s += 'Definition: ' + args.callee.toString() + '\n';
96
97                         }
98                 return s;
99         } catch(E) {
100                 return s + '\nDEBUG ME: ' + js2JSON(E) + '\n';
101         }
102 }
103
104 function handle_error(E) {
105         var s = '';
106         if (instanceOf(E,ex)) {
107                 s += E.err_msg();
108                 //s += '\n\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n';
109                 //s += 'This error was anticipated.\n\n';
110                 //s += js2JSON(E).substr(0,200) + '...\n\n';
111                 if (snd_bad) snd_bad();
112         } else {
113                 s += '\n\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n';
114                 s += 'This is a bug that we will fix later.\n\n';
115                 s += js2JSON(E).substr(0,200) + '\n\n';
116                 if (snd_really_bad) snd_really_bad();
117         }
118         sdump('D_ERROR',s);
119         s_alert(s);
120 }
121