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