]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/opac/skin/default/js/advanced.js
Merge branch 'opac-tt-poc' of git+ssh://yeti.esilibrary.com/home/evergreen/evergreen...
[Evergreen.git] / Open-ILS / web / opac / skin / default / js / advanced.js
1 /* advanced search interface */
2
3 attachEvt("common", "run", advInit);
4
5 function advInit() { 
6
7         /* propogate these? */
8
9         depthSelInit(); 
10         setEnterFunc( $n( $('advanced.marc.tbody'), 'advanced.marc.value'), advMARCRun );
11
12         unHideMe($('adv_quick_search_sidebar'));
13
14         /*
15         if(isXUL()) 
16                 setSelector($('adv_quick_type'), 'tcn'); */
17
18         setEnterFunc($('adv_quick_text'), advGenericSearch);
19
20         unHideMe($('adv_marc_search_sidebar'));
21 }
22
23
24 function advAddMARC() {
25         var newt = $('adv_sdbar_table').cloneNode(true);
26         newt.id = "";
27         unHideMe($n(newt, 'crow'));
28         $n(newt, 'advanced.marc.tag').value = "";
29         $n(newt, 'advanced.marc.subfield').value = "";
30         $n(newt, 'advanced.marc.value').value = "";
31         $('adv_marc_search_sidebar').insertBefore(newt, $('adv_marc_submit'));
32 }
33
34 function advMARCRun() {
35
36         clearSearchParams();
37
38         var div = $('adv_marc_search_sidebar');
39         var tbodies = div.getElementsByTagName('tbody');
40         var searches = [];
41
42         for( var i = 0; i < tbodies.length; i++ ) {
43                 var tbody = tbodies[i];
44                 var val = advExtractMARC(tbody);
45                 if(val) searches.push(val);
46         }
47
48         if(searches.length == 0) return;
49
50         var arg = {};
51         arg.page = RRESULT;
52         arg[PARAM_FORM] = 'all'
53         arg[PARAM_RTYPE] = RTYPE_MARC;
54         arg[PARAM_OFFSET] = 0;
55         arg[PARAM_DEPTH]        = depthSelGetDepth();
56         arg[PARAM_LOCATION]     = depthSelGetNewLoc();
57         arg[PARAM_SEARCHES] = js2JSON(searches);
58         arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
59         arg[PARAM_TERM] = "";
60
61         goTo(buildOPACLink(arg));
62 }
63
64
65 /* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */
66 function advExtractMARC(tbody) {
67         if(!tbody) return null;
68         var term = $n(tbody, 'advanced.marc.value').value;
69         if(!term) return null;
70
71         var subfield = $n(tbody, 'advanced.marc.subfield').value;
72         if(!subfield) subfield = "_";
73
74         var tag = $n(tbody, 'advanced.marc.tag').value;
75         if(!tag) return null;
76
77         return { 'term' : term.toLowerCase(), 'restrict' :  [ { 'tag' : tag, 'subfield' : subfield } ] };
78 }
79
80 function advGenericSearch() {
81         clearSearchParams();
82         var type = getSelectorVal($('adv_quick_type'));
83         
84         var term = $('adv_quick_text').value;
85         if(!term) return;
86
87         var arg = {};
88
89         switch(type) {
90
91                 case 'isbn' :
92                         arg.page                                        = RRESULT;
93                         arg[PARAM_STYPE]                = "";
94                         arg[PARAM_TERM]         = "";
95                         arg[PARAM_RTYPE]                = RTYPE_ISBN;
96                         arg[PARAM_OFFSET]               = 0;
97                         arg[PARAM_ADVTERM]      = term.toLowerCase();
98                         break;
99                 
100                 case 'issn' :
101                         arg.page                                        = RRESULT;
102                         arg[PARAM_STYPE]                = "";
103                         arg[PARAM_TERM]         = "";
104                         arg[PARAM_ADVTERM]      = term.toLowerCase();
105                         arg[PARAM_OFFSET]               = 0;
106                         arg[PARAM_RTYPE]                = RTYPE_ISSN;
107                         break;
108
109                 case 'tcn' :
110                         arg.page                                        = RRESULT;
111                         arg[PARAM_STYPE]                = "";
112                         arg[PARAM_TERM]         = "";
113                         arg[PARAM_ADVTERM]      = term;
114                         arg[PARAM_OFFSET]               = 0;
115                         arg[PARAM_RTYPE]                = RTYPE_TCN;
116                         break;
117
118         case 'barcode':
119             advFindBarcode(term);
120             break;
121
122
123                 case 'cn':
124                         arg.page                        = CNBROWSE;
125                         arg[PARAM_CN]   = term;
126                         arg[PARAM_DEPTH]                = depthSelGetDepth();
127                         arg[PARAM_LOCATION]     = depthSelGetNewLoc();
128                         break;
129
130                 case 'lccn':
131                         arg.page = RRESULT;
132                         arg[PARAM_FORM] = 'all'
133                         arg[PARAM_RTYPE] = RTYPE_MARC;
134                         arg[PARAM_OFFSET] = 0;
135                         arg[PARAM_DEPTH]        = depthSelGetDepth();
136                         arg[PARAM_LOCATION]     = depthSelGetNewLoc();
137                         arg[PARAM_SEARCHES] = js2JSON([{ 'term' : term.toLowerCase(), 
138                                         'restrict' :  [ { 'tag' : '010', 'subfield' : '_' } ] }]);
139                         arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
140                         arg[PARAM_TERM] = "";
141                         break;
142
143
144                 default: alert('not done');
145         }
146
147         if(arg.page) goTo(buildOPACLink(arg));
148 }
149
150
151 function advFindBarcode(barcode) {
152     var req = new Request(FETCH_BIB_IDS_BY_BARCODE, barcode);
153     req.callback(advDrawBarcode);
154     req.request.alertEvent = false;
155     req.send();
156 }
157
158 function advDrawBarcode(r) {
159     var title_ids = r.getResultObject();
160     if(checkILSEvent(title_ids)) {
161         alertId('myopac.copy.not.found');
162         return;
163     }
164     if(!title_ids) return;
165     var args = {};
166     if (title_ids.length == 1) {
167         args.page = RDETAIL;
168         args[PARAM_RID] = title_ids[0];
169     } else {
170         args.page = RRESULT;
171             args[PARAM_RTYPE] = RTYPE_LIST;
172             args[PARAM_RLIST] = title_ids;
173     }
174     location.href = buildOPACLink(args);
175 }
176
177
178