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