1 /* advanced search interface */
3 attachEvt("common", "run", advInit);
11 setEnterFunc( $n( $('advanced.marc.tbody'), 'advanced.marc.value'), advMARCRun );
13 unHideMe($('adv_quick_search_sidebar'));
17 setSelector($('adv_quick_type'), 'tcn'); */
19 setEnterFunc($('adv_quick_text'), advGenericSearch);
20 setEnterFunc($('authority_browse_term'), advAuthorityBrowse);
22 unHideMe($('adv_marc_search_sidebar'));
23 unHideMe($('adv_authority_browse_sidebar'));
27 function authoritySelInit() {
28 dojo.require("openils.Util");
29 fieldmapper.standardRequest(
30 ["open-ils.supercat", "open-ils.supercat.authority.browse_axis_list"], {
31 "params": [true /* whole objects */],
33 "oncomplete": function(r) {
34 if ((r = openils.Util.readResponse(r))) {
35 dojo.empty("authority_browse_axis");
36 dojo.forEach(r, function(axis) {
37 dojo.create("option", {"innerHTML": axis.name(), "value": axis.code()}, "authority_browse_axis");
45 function advAddMARC() {
46 var newt = $('adv_sdbar_table').cloneNode(true);
48 unHideMe($n(newt, 'crow'));
49 $n(newt, 'advanced.marc.tag').value = "";
50 $n(newt, 'advanced.marc.subfield').value = "";
51 $n(newt, 'advanced.marc.value').value = "";
52 $('adv_marc_search_sidebar').insertBefore(newt, $('adv_marc_submit'));
55 function advMARCRun() {
59 var div = $('adv_marc_search_sidebar');
60 var tbodies = div.getElementsByTagName('tbody');
63 for( var i = 0; i < tbodies.length; i++ ) {
64 var tbody = tbodies[i];
65 var val = advExtractMARC(tbody);
66 if(val) searches.push(val);
69 if(searches.length == 0) return;
73 arg[PARAM_FORM] = 'all'
74 arg[PARAM_RTYPE] = RTYPE_MARC;
75 arg[PARAM_OFFSET] = 0;
76 arg[PARAM_DEPTH] = depthSelGetDepth();
77 arg[PARAM_LOCATION] = depthSelGetNewLoc();
78 arg[PARAM_SEARCHES] = js2JSON(searches);
79 arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
82 goTo(buildOPACLink(arg));
86 /* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */
87 function advExtractMARC(tbody) {
88 if(!tbody) return null;
89 var term = $n(tbody, 'advanced.marc.value').value;
90 if(!term) return null;
92 var subfield = $n(tbody, 'advanced.marc.subfield').value;
93 if(!subfield) subfield = "_";
95 var tag = $n(tbody, 'advanced.marc.tag').value;
98 return { 'term' : term.toLowerCase(), 'restrict' : [ { 'tag' : tag, 'subfield' : subfield } ] };
101 function advGenericSearch() {
103 var type = getSelectorVal($('adv_quick_type'));
105 var term = $('adv_quick_text').value;
114 arg[PARAM_STYPE] = "";
115 arg[PARAM_TERM] = "";
116 arg[PARAM_RTYPE] = RTYPE_ISBN;
117 arg[PARAM_OFFSET] = 0;
118 arg[PARAM_ADVTERM] = term.toLowerCase();
123 arg[PARAM_STYPE] = "";
124 arg[PARAM_TERM] = "";
125 arg[PARAM_ADVTERM] = term.toLowerCase();
126 arg[PARAM_OFFSET] = 0;
127 arg[PARAM_RTYPE] = RTYPE_ISSN;
132 arg[PARAM_STYPE] = "";
133 arg[PARAM_TERM] = "";
134 arg[PARAM_ADVTERM] = term;
135 arg[PARAM_OFFSET] = 0;
136 arg[PARAM_RTYPE] = RTYPE_TCN;
140 advFindBarcode(term);
146 arg[PARAM_CN] = term;
147 arg[PARAM_DEPTH] = depthSelGetDepth();
148 arg[PARAM_LOCATION] = depthSelGetNewLoc();
153 arg[PARAM_FORM] = 'all'
154 arg[PARAM_RTYPE] = RTYPE_MARC;
155 arg[PARAM_OFFSET] = 0;
156 arg[PARAM_DEPTH] = depthSelGetDepth();
157 arg[PARAM_LOCATION] = depthSelGetNewLoc();
158 arg[PARAM_SEARCHES] = js2JSON([{ 'term' : term.toLowerCase(),
159 'restrict' : [ { 'tag' : '010', 'subfield' : '_' } ] }]);
160 arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
161 arg[PARAM_TERM] = "";
165 default: alert('not done');
168 if(arg.page) goTo(buildOPACLink(arg));
172 function advFindBarcode(barcode) {
173 var req = new Request(FETCH_BIB_IDS_BY_BARCODE, barcode);
174 req.callback(advDrawBarcode);
175 req.request.alertEvent = false;
179 function advDrawBarcode(r) {
180 var title_ids = r.getResultObject();
181 if(checkILSEvent(title_ids)) {
182 alertId('myopac.copy.not.found');
185 if(!title_ids) return;
186 if (title_ids[0] == -1) { // pre-cat record
187 alertId('myopac.copy.not.cataloged');
192 if (title_ids.length == 1) {
194 args[PARAM_RID] = title_ids[0];
197 args[PARAM_RTYPE] = RTYPE_LIST;
198 args[PARAM_RLIST] = title_ids;
200 location.href = buildOPACLink(args);
203 function advAuthorityBrowse() {
204 var selector = dojo.byId("authority_browse_axis");
205 var args = {"page": AUTHBROWSE};
206 args[PARAM_AUTHORITY_BROWSE_AXIS] =
207 selector.options[selector.selectedIndex].value;
208 args[PARAM_AUTHORITY_BROWSE_TERM] =
209 dojo.byId("authority_browse_term").value;
210 location.href = buildOPACLink(args);