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