]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/util/functional.js
fix
[working/Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / util / functional.js
1 sdump('D_FUNCTIONAL',"Loading functional.js\n");
2
3 function filter_list(list,f) {
4         var new_list = [];
5         for (var i in list) {
6                 var t = f( list[i] );
7                 if (t) new_list.push( list[i] );
8         }
9         return new_list;
10 }
11
12 function filter_object(obj,f) {
13         var new_obj = {};
14         for (var i in obj) {
15                 var t = f( i, obj[i] );
16                 if (t) new_obj[i] = obj[i];
17         }
18         return new_obj;
19 }
20
21 function find_list(list,f) {
22         for (var i in list) {
23                 var t = f( list[i] );
24                 if (t) return list[i];
25         }
26         return null;
27 }
28
29 function find_object(obj,f) {
30         for (var i in obj) {
31                 var t = f( i, obj[i] );
32                 if (t) return obj[i];
33         }
34         return null;
35 }
36
37 function map_list(list,f) {
38         var new_list = [];
39         for (var i in list) {
40                 new_list.push( f( list[i] ) );
41         }
42         return new_list;
43 }
44
45 function map_flat_list(list,f) {
46         var new_list = [];
47         for (var i in list) {
48                 new_list = new_list.concat( f( list[i] ) );
49         }
50         return new_list;
51 }
52
53 function map_object(obj,f) {
54         var new_obj = {};
55         for (var i in obj) {
56                 new_obj[ f( i, obj[i] )[0] ] = f( i, obj[i] )[1];
57         }
58         return new_obj;
59 }
60
61 function map_object_to_list(obj,f) {
62         var new_list = [];
63         for (var i in obj) {
64                 new_list.push( f( obj, i ) );
65         }
66         return new_list;
67 }
68
69 function convert_object_list_to_hash(list) {
70         var my_hash = new Object();
71         if (list) {
72                 for (var i = 0; i < list.length; i++) {
73                         my_hash[ list[i].id() ] = list[i];
74                 }
75         }
76         return my_hash;
77 }
78
79 function find_id_object_in_list(list,id) {
80         //sdump('D_FUNCTIONAL','find_id_object_in_list(' + js2JSON(list).substr(0,20) + '... ,' + id + ')\n');
81         if (list) {
82                 for (var i = 0; i < list.length; i++ ) {
83                         try {
84                                 if ( list[i].id() == id ) {
85                                         return list[i];
86                                 }
87                         } catch(E) {
88                                 sdump('D_FUNCTIONAL','find_id_object_in_list error, i = ' + i + '  typeof(list[i]) = ' + typeof(list[i]) + '  list[i] = ' + js2JSON(list[i]) + ' : ' + js2JSON(E) + '\n');
89                         }
90                 }
91         }
92         //sdump('D_FUNCTIONAL','not found\n');
93         return null;
94 }
95
96 function find_attr_object_in_list(list,attr,value) {
97         if (list) {
98                 for (var i = 0; i < list.length; i++ ) {
99                         sdump('D_FUNCTIONAL','find_attr_object_in_list: i = ' + i + '  id = ' + list[i].id() + '\n');
100                         try {
101                                 var command = 'list[' + i + '].'+attr+'() == ' + value;
102                                 if ( eval(command) ) {
103                                         return list[i];
104                                 }
105                         } catch(E) {
106                                 sdump('D_FUNCTIONAL','find_attr_object_in_list error, i = ' + i + '  typeof(list[i]) = ' + typeof(list[i]) + '  list[i] = ' + js2JSON(list[i]) + ' :   list = ' + js2JSON(list) + ' : ' + js2JSON(E) + '\n');
107                         }
108                 }
109         }
110         return null;
111 }
112
113