]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/util/util.js
return something even on error for string bundle functions
[Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / util / util.js
1 sdump('D_TRACE','Loading util.js\n');
2
3 var timer = {};
4 var counter = {};
5
6 function getString( key ) {
7         var bundles = document.getElementById('string_bundles');
8         for (var i = i; i < bundles.childNodes.length; i++) {
9                 var bundle = bundles[i];
10                 try {
11
12                         var string = bundle.getString( key );
13                         if (string)
14                                 return string;
15
16                 } catch(E) {
17                         dump(E + '\n');
18                         return '';
19                 }
20         }
21 }
22
23 function getFormattedString( key, strArray ) {
24         var bundles = document.getElementById('string_bundles');
25         for (var i = i; i < bundles.childNodes.length; i++) {
26                 var bundle = bundles[i];
27                 try {
28
29                         var string = bundle.getFormattedString( key, strArray );
30                         if (string)
31                                 return string;
32
33                 } catch(E) {
34                         dump(E + '\n');
35                         return '';
36                 }
37         }
38 }
39
40 function string_to_array(s) {
41         var my_array = [];
42         for (var i = 0; i < s.length; i++ ) {
43                 my_array.push( s.charAt(i) );
44         }
45         return my_array;
46 }
47
48 function yesno(value) {
49         switch(value) {
50                 case true: case 'true': case '1': case 'on':
51                         return 'Yes';
52                 default: 
53                         return 'No';
54         }
55 }
56
57 function formatted_date(date,format) {
58         // pass in a Date object or epoch seconds
59         if (typeof(date) == 'string') {
60                 date = new Date( parseInt( date + '000' ) );
61         }
62         var mm = date.getMonth() + 1;
63         mm = mm.toString();
64         if (mm.length == 1) mm = '0' +mm;
65         var dd = date.getDate().toString();
66         if (dd.length == 1) dd = '0' +dd;
67         var yyyy = date.getFullYear().toString();
68         var s = format.replace( /%m/g, mm );
69         s = s.replace( /%d/g, dd );
70         s = s.replace( /%Y/g, yyyy );
71         return s;
72 }
73
74 function interval_to_seconds ( $interval ) {
75
76         $interval = $interval.replace( /and/, ',' );
77         $interval = $interval.replace( /,/, ' ' );
78
79         var $amount = 0;
80         var results = $interval.match( /\s*\+?\s*(\d+)\s*(\w{1})\w*\s*/g);  
81         for (var i in results) {
82                 var result = results[i].match( /\s*\+?\s*(\d+)\s*(\w{1})\w*\s*/ );
83                 if (result[2] == 's') $amount += result[1] ;
84                 if (result[2] == 'm') $amount += 60 * result[1] ;
85                 if (result[2] == 'h') $amount += 60 * 60 * result[1] ;
86                 if (result[2] == 'd') $amount += 60 * 60 * 24 * result[1] ;
87                 if (result[2] == 'w') $amount += 60 * 60 * 24 * 7 * result[1] ;
88                 if (result[2] == 'M') $amount += ((60 * 60 * 24 * 365)/12) * result[1] ;
89                 if (result[2] == 'y') $amount += 60 * 60 * 24 * 365 * result[1] ;
90         }
91         return $amount;
92 }
93
94 /*
95 function debug() {
96         var s = '';
97         for (var i = 0; i < arguments.length; i++) {
98                 s = s + arguments[i];
99         }
100         //sdump('D_UTIL','debug:' + s + '\n');
101 }
102 */
103
104 function counter_init(id) {
105         counter[id] = 0;
106 }
107
108 function counter_incr(id) {
109         if (! counter[id]) { counter_init(id); }
110         return ++counter[id];
111 }
112
113 function counter_peek(id) {
114         if (! counter[id]) { return 0; }
115         return counter[id];
116 }
117
118 function timer_init(id) {
119         timer[id] = (new Date).getTime();
120 }
121
122 function timer_elapsed(id) {
123         if (! timer[id]) { timer_init(id); }
124         var ms = (new Date).getTime() - timer[id];
125         return( ms + 'ms (' + ms/1000 + 's)' );
126 }
127
128 function dump_ns_node( node ) {
129         return (
130         'id=<' + 
131         node[fieldmap["Fieldmapper::biblio::record_node"].fields.id.position] 
132         + '>  intra-id=<' + 
133         node[fieldmap["Fieldmapper::biblio::record_node"].fields.intra_doc_id.position]
134         + '>  name=<' + 
135         node[fieldmap["Fieldmapper::biblio::record_node"].fields.name.position]
136         + '>  node_type=<' + 
137         node[fieldmap["Fieldmapper::biblio::record_node"].fields.type.position]
138         + '>  parent_node=<' + 
139         node[fieldmap["Fieldmapper::biblio::record_node"].fields.parent_node.position]
140         + '>  '
141         );
142 }
143
144 function nodeset2tree(ns) {
145         for (var i in ns) {
146                 if (ns[i].parent_node) {
147                         ns_addChild( 
148                                 ns, 
149                                 ns[i].parent_node, 
150                                 ns[i].intra_doc_id 
151                         );
152                 }
153         }
154         return ns;
155 }
156
157 function ns_addChild(ns,p,c) {
158         if (! ns[p].children ) { ns[p].children = []; }
159         ns[p].children.push(ns[c]);
160 }
161
162 function print_tabs(t) {
163         var r = '';
164         for (var j = 0; j < t; j++ ) { r = r + "\t"; }
165         return r;
166 }
167
168 function pretty_print(s) {
169         var r = ''; var t = 0;
170         for (var i in s) {
171                 if (s[i] == '{') {
172                         r = r + "\n" + print_tabs(t) + s[i]; t++;
173                         r = r + "\n" + print_tabs(t);
174                 } else if (s[i] == '[') {
175                         r = r + "\n" + print_tabs(t) + s[i]; t++;
176                         r = r + "\n" + print_tabs(t);
177                 } else if (s[i] == '}') {
178                         t--; r = r + "\n" + print_tabs(t) + s[i]; 
179                         r = r + "\n" + print_tabs(t);
180                 } else if (s[i] == ']') { 
181                         t--; r = r + "\n" + print_tabs(t) + s[i];
182                         r = r + "\n" + print_tabs(t);
183                 } else if (s[i] == ',') {
184                         r = r + s[i]; 
185                         r = r + "\n" + print_tabs(t);
186                 } else {
187                         r = r + s[i];
188                 }
189         }
190         return r;
191 }
192
193 function super_dump(o,t) {
194         var s = "\n";
195         for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
196         s = s + "=-=-=\n";
197         s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
198         for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
199         s = s + "typeof = " + typeof(o) + "\n";
200         try {
201                 var string = new XMLSerializer().serializeToString(o);
202                 return( string + "\n" );
203         } catch( E ) {
204                 var i;
205                 var c = 0;
206                 for (i in o) {
207                         switch(typeof(i)) {
208                                 case 'object':
209                                         s = s + super_dump(i,t+1);
210                                         break;
211                                 default :
212                                         var value = o[i];
213                                         for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
214                                         s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
215                                         if (typeof(value) == 'object') {
216                                                 value = super_dump(value,t+1);
217                                         }
218                                         s = s + "\ttoString:" + i.toString() + "\tvalue:" + value + "\n";
219                                         break;
220                         }
221                 }
222                 return( s + "\n" );
223         }
224 }
225
226 function super_dump_norecurse(o,t) {
227         var s = "\n";
228         for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
229         s = s + "=-=-=\n";
230         s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
231         for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
232         s = s + "typeof = " + typeof(o) + "\n";
233         try {
234                 var string = new XMLSerializer().serializeToString(o);
235                 return( string + "\n" );
236         } catch( E ) {
237                 var i;
238                 var c = 0;
239                 for (i in o) {
240                         switch(typeof(i)) {
241                                 default :
242                                         var value = o[i];
243                                         for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
244                                         s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
245                                         s = s + "\ttoString:" + i.toString() + "\n";
246                                         break;
247                         }
248                 }
249                 return( s + "\n" );
250         }
251 }
252
253