]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/opac/skin/default/js/advanced.js
config ui trivial improvements, scratching out a place for a browse UI
[working/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         unHideMe($('adv_authority_browse_sidebar'));
22 }
23
24
25 function advAddMARC() {
26         var newt = $('adv_sdbar_table').cloneNode(true);
27         newt.id = "";
28         unHideMe($n(newt, 'crow'));
29         $n(newt, 'advanced.marc.tag').value = "";
30         $n(newt, 'advanced.marc.subfield').value = "";
31         $n(newt, 'advanced.marc.value').value = "";
32         $('adv_marc_search_sidebar').insertBefore(newt, $('adv_marc_submit'));
33 }
34
35 function advMARCRun() {
36
37         clearSearchParams();
38
39         var div = $('adv_marc_search_sidebar');
40         var tbodies = div.getElementsByTagName('tbody');
41         var searches = [];
42
43         for( var i = 0; i < tbodies.length; i++ ) {
44                 var tbody = tbodies[i];
45                 var val = advExtractMARC(tbody);
46                 if(val) searches.push(val);
47         }
48
49         if(searches.length == 0) return;
50
51         var arg = {};
52         arg.page = RRESULT;
53         arg[PARAM_FORM] = 'all'
54         arg[PARAM_RTYPE] = RTYPE_MARC;
55         arg[PARAM_OFFSET] = 0;
56         arg[PARAM_DEPTH]        = depthSelGetDepth();
57         arg[PARAM_LOCATION]     = depthSelGetNewLoc();
58         arg[PARAM_SEARCHES] = js2JSON(searches);
59         arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
60         arg[PARAM_TERM] = "";
61
62         goTo(buildOPACLink(arg));
63 }
64
65
66 /* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */
67 function advExtractMARC(tbody) {
68         if(!tbody) return null;
69         var term = $n(tbody, 'advanced.marc.value').value;
70         if(!term) return null;
71
72         var subfield = $n(tbody, 'advanced.marc.subfield').value;
73         if(!subfield) subfield = "_";
74
75         var tag = $n(tbody, 'advanced.marc.tag').value;
76         if(!tag) return null;
77
78         return { 'term' : term.toLowerCase(), 'restrict' :  [ { 'tag' : tag, 'subfield' : subfield } ] };
79 }
80
81 function advGenericSearch() {
82         clearSearchParams();
83         var type = getSelectorVal($('adv_quick_type'));
84         
85         var term = $('adv_quick_text').value;
86         if(!term) return;
87
88         var arg = {};
89
90         switch(type) {
91
92                 case 'isbn' :
93                         arg.page                                        = RRESULT;
94                         arg[PARAM_STYPE]                = "";
95                         arg[PARAM_TERM]         = "";
96                         arg[PARAM_RTYPE]                = RTYPE_ISBN;
97                         arg[PARAM_OFFSET]               = 0;
98                         arg[PARAM_ADVTERM]      = term.toLowerCase();
99                         break;
100                 
101                 case 'issn' :
102                         arg.page                                        = RRESULT;
103                         arg[PARAM_STYPE]                = "";
104                         arg[PARAM_TERM]         = "";
105                         arg[PARAM_ADVTERM]      = term.toLowerCase();
106                         arg[PARAM_OFFSET]               = 0;
107                         arg[PARAM_RTYPE]                = RTYPE_ISSN;
108                         break;
109
110                 case 'tcn' :
111                         arg.page                                        = RRESULT;
112                         arg[PARAM_STYPE]                = "";
113                         arg[PARAM_TERM]         = "";
114                         arg[PARAM_ADVTERM]      = term;
115                         arg[PARAM_OFFSET]               = 0;
116                         arg[PARAM_RTYPE]                = RTYPE_TCN;
117                         break;
118
119         case 'barcode':
120             advFindBarcode(term);
121             break;
122
123
124                 case 'cn':
125                         arg.page                        = CNBROWSE;
126                         arg[PARAM_CN]   = term;
127                         arg[PARAM_DEPTH]                = depthSelGetDepth();
128                         arg[PARAM_LOCATION]     = depthSelGetNewLoc();
129                         break;
130
131                 case 'lccn':
132                         arg.page = RRESULT;
133                         arg[PARAM_FORM] = 'all'
134                         arg[PARAM_RTYPE] = RTYPE_MARC;
135                         arg[PARAM_OFFSET] = 0;
136                         arg[PARAM_DEPTH]        = depthSelGetDepth();
137                         arg[PARAM_LOCATION]     = depthSelGetNewLoc();
138                         arg[PARAM_SEARCHES] = js2JSON([{ 'term' : term.toLowerCase(), 
139                                         'restrict' :  [ { 'tag' : '010', 'subfield' : '_' } ] }]);
140                         arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
141                         arg[PARAM_TERM] = "";
142                         break;
143
144
145                 default: alert('not done');
146         }
147
148         if(arg.page) goTo(buildOPACLink(arg));
149 }
150
151
152 function advFindBarcode(barcode) {
153     var req = new Request(FETCH_BIB_IDS_BY_BARCODE, barcode);
154     req.callback(advDrawBarcode);
155     req.request.alertEvent = false;
156     req.send();
157 }
158
159 function advDrawBarcode(r) {
160     var title_ids = r.getResultObject();
161     if(checkILSEvent(title_ids)) {
162         alertId('myopac.copy.not.found');
163         return;
164     }
165     if(!title_ids) return;
166     var args = {};
167     if (title_ids.length == 1) {
168         args.page = RDETAIL;
169         args[PARAM_RID] = title_ids[0];
170     } else {
171         args.page = RRESULT;
172             args[PARAM_RTYPE] = RTYPE_LIST;
173             args[PARAM_RLIST] = title_ids;
174     }
175     location.href = buildOPACLink(args);
176 }
177
178 function authBrowseSubmit() {
179     var selector = dojo.byId("authority_browse_axis");
180     var args = {"page": AUTHBROWSE};
181     args[PARAM_AUTHORITY_BROWSE_AXIS] =
182         selector.options[selector.selectedIndex].value;
183     args[PARAM_AUTHORITY_BROWSE_TERM] =
184         dojo.byId("authority_browse_term").value;
185     location.href = buildOPACLink(args);
186 }
187