]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/server/patron/search_result.js
81994536a1990eb0405ddbef2bb78e1f9d3aa75d
[Evergreen.git] / Open-ILS / xul / staff_client / server / patron / search_result.js
1 dump('entering patron/search_result.js\n');
2
3 if (typeof patron == 'undefined') patron = {};
4 patron.search_result = function (params) {
5
6         JSAN.use('util.error'); this.error = new util.error();
7         JSAN.use('util.network'); this.network = new util.network();
8         this.w = window;
9 }
10
11 patron.search_result.prototype = {
12
13         'init' : function( params ) {
14
15                 var obj = this;
16
17                 obj.session = params['session'];
18                 obj.query = params['query'];
19
20                 JSAN.use('OpenILS.data'); this.OpenILS = {}; 
21                 obj.OpenILS.data = new OpenILS.data(); obj.OpenILS.data.init({'via':'stash'});
22
23                 JSAN.use('util.list'); obj.list = new util.list('patron_list');
24                 function getString(s) { return obj.OpenILS.data.entities[s]; }
25                 obj.list.init(
26                         {
27                                 'columns' : [
28                                         {
29                                                 'active' : 'barcode_col', 'label' : 'Barcode', 'flex' : 1, 
30                                                 'primary' : false, 'hidden' : false, 'render' : 'my.au.card().barcode()'
31                                         },
32                                         { 
33                                                 'active' : 'id_col', 'label' : getString('staff.au_label_active'), 'flex' : 1, 
34                                                 'primary' : false, 'hidden' : false, 'render' : 'my.au.active() ? "Yes" : "No"'
35                                         },
36                                         { 
37                                                 'id' : 'id_col', 'label' : getString('staff.au_label_id'), 'flex' : 1, 
38                                                 'primary' : false, 'hidden' : false, 'render' : 'my.au.id()'
39                                         },
40                                         { 
41                                                 'id' : 'prefix_col', 'label' : getString('staff.au_label_prefix'), 'flex' : 1, 
42                                                 'primary' : false, 'hidden' : false, 'render' : 'my.au.prefix()'
43                                         },
44                                         { 
45                                                 'id' : 'family_name_col', 'label' : getString('staff.au_label_family_name'), 'flex' : 1, 
46                                                 'primary' : false, 'hidden' : false, 'render' : 'my.au.family_name()'
47                                         },
48                                         { 
49                                                 'id' : 'first_given_name_col', 'label' : getString('staff.au_label_first_given_name'), 'flex' : 1, 
50                                                 'primary' : false, 'hidden' : false, 'render' : 'my.au.first_given_name()'
51                                         },
52                                         { 
53                                                 'id' : 'second_given_name_col', 'label' : getString('staff.au_label_second_given_name'), 'flex' : 1, 
54                                                 'primary' : false, 'hidden' : false, 'render' : 'my.au.second_given_name()'
55                                         },
56                                         { 
57                                                 'id' : 'suffix_col', 'label' : getString('staff.au_label_suffix'), 'flex' : 1, 
58                                                 'primary' : false, 'hidden' : false, 'render' : 'my.au.suffix()'
59                                         },
60                                 ],
61                                 'map_row_to_column' : function(row,col) {
62                                         // row contains { 'my' : { 'au' : {} } }
63                                         // col contains one of the objects listed above in columns
64                                         var my = row.my;
65                                         return eval( col.render );
66                                 },
67                                 'retrieve_row' : function(params) {
68                                         var id = params.retrieve_id;
69                                         var patron = obj.network.request(
70                                                 api.fm_au_retrieve_via_id.app,
71                                                 api.fm_au_retrieve_via_id.method,
72                                                 [ obj.session, id ]
73                                         );
74
75                                         var row = params.row;
76                                         if (typeof row.my == 'undefined') row.my = {};
77                                         row.my.au = patron;
78
79                                         return row;
80                                 }
81                         }
82                 );
83                 JSAN.use('util.controller'); obj.controller = new util.controller();
84                 obj.controller.init(
85                         {
86                                 control_map : {
87                                         'cmd_broken' : [
88                                                 ['command'],
89                                                 function() { alert('Not Yet Implemented'); }
90                                         ],
91                                 }
92                         }
93                 );
94
95                 if (obj.query) obj.search(obj.query);
96         },
97
98         'search' : function(query) {
99                 var search_hash = {};
100                 for (var i in query) {
101                         switch( i ) {
102                                 case 'phone': case 'ident': 
103                                 
104                                         search_hash[ i ] = {};
105                                         search_hash[ i ].value = query[i];
106                                         search_hash[i].group = 2; 
107                                 break;
108
109                                 case 'street1': case 'street2': case 'city': case 'state': case 'post_code': 
110                                 
111                                         search_hash[ i ] = {};
112                                         search_hash[ i ].value = query[i];
113                                         search_hash[i].group = 1; 
114                                 break;
115
116                                 case 'family_name': case 'first_given_name': case 'second_given_name': case 'email':
117
118                                         search_hash[ i ] = {};
119                                         search_hash[ i ].value = query[i];
120                                         search_hash[i].group = 0; 
121                                 break;
122                         }
123                 }
124                 try {
125                         var results = this.network.request(
126                                 api.fm_au_ids_retrieve_via_hash.app,
127                                 api.fm_au_ids_retrieve_via_hash.method,
128                                 [ this.session, search_hash ]
129                         );
130                         for (var i = 0; i < results.length; i++) {
131                                 this.list.append( { 'retrieve_id' : results[i], 'row' : {} } );
132                         }
133                 } catch(E) {
134                         this.error.sdump('D_ERROR','patron.search_result.search: ' + js2JSON(E));
135                 }
136         }
137
138 }
139
140 dump('exiting patron/search_result.js\n');