]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/opac/skin/default/js/advanced.js
moved quick search to the side of the adv page, added TCN searches
[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         clearSearchParams();
9
10         depthSelInit(); 
11         setEnterFunc($('opac.advanced.quick.isbn'), advISBNRun );
12         setEnterFunc($('opac.advanced.quick.issn'), advISSNRun );
13         setEnterFunc($('opac.advanced.quick.cn'), advCNRun );
14         setEnterFunc( $n( $('advanced.marc.tbody'), 'advanced.marc.value'), advMARCRun );
15
16         unHideMe($('adv_quick_search_sidebar'));
17         if(isXUL()) 
18                 setSelector($('adv_quick_type'), 'tcn');
19         setEnterFunc($('adv_quick_text'), advGenericSearch);
20 }
21
22 function advISBNRun() {
23         var isbn = $('opac.advanced.quick.isbn').value;
24         if(!isbn) return;
25         var arg                                 = {};
26         arg.page                                        = RRESULT;
27         arg[PARAM_STYPE]                = "";
28         arg[PARAM_TERM]         = "";
29         arg[PARAM_RTYPE]                = RTYPE_ISBN;
30         arg[PARAM_OFFSET]               = 0;
31         arg[PARAM_ADVTERM]      = isbn;
32         goTo(buildOPACLink(arg));
33 }
34
35 function advISSNRun() {
36         var issn = $('opac.advanced.quick.issn').value;
37         if(!issn) return;
38         var arg                                 = {};
39         arg.page                                        = RRESULT;
40         arg[PARAM_STYPE]                = "";
41         arg[PARAM_TERM]         = "";
42         arg[PARAM_ADVTERM]      = issn;
43         arg[PARAM_OFFSET]               = 0;
44         arg[PARAM_RTYPE]                = RTYPE_ISSN;
45         goTo(buildOPACLink(arg));
46 }
47
48 function advCNRun() {
49         var cn = $('opac.advanced.quick.cn').value;
50         if(!cn) return;
51         var arg                 = {};
52         arg.page                        = CNBROWSE;
53         arg[PARAM_CN]   = cn;
54         goTo(buildOPACLink(arg));
55 }
56
57
58 function advAddMARC() {
59         var newrow = $('advanced.marc.template').cloneNode(true);
60         $n(newrow, 'advanced.marc.tag').value = "";
61         $n(newrow, 'advanced.marc.subfield').value = "";
62         $n(newrow, 'advanced.marc.value').value = "";
63         $('advanced.marc.tbody').insertBefore(newrow, $('advanced.marc.submit.row'));
64 }
65
66 function advMARCRun() {
67
68         var t = $('advanced.marc.tbody');
69         var searches = [];
70
71         var children = t.getElementsByTagName('tr');
72         for( var c in children ) {
73                 var child = children[c];
74                 if(!(child && child.innerHTML)) continue;
75                 var val = advExtractMARC(child);
76                 if(val) searches.push(val);
77         }
78
79         if(searches.length == 0) return;
80
81         var arg = {};
82         arg.page = RRESULT;
83         arg[PARAM_FORM] = 'all'
84         arg[PARAM_RTYPE] = RTYPE_MARC;
85         arg[PARAM_OFFSET] = 0;
86         arg[PARAM_DEPTH]        = depthSelGetDepth();
87         arg[PARAM_LOCATION]     = depthSelGetNewLoc();
88         arg[PARAM_SEARCHES] = js2JSON(searches);
89         arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
90         arg[PARAM_TERM] = "";
91
92         goTo(buildOPACLink(arg));
93 }
94
95
96 /* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */
97 function advExtractMARC(row) {
98         if(!row || row.id == 'advanced.marc.submit.row') return null;
99         var term = $n(row, 'advanced.marc.value').value;
100         if(!term) return null;
101
102         var subfield = $n(row, 'advanced.marc.subfield').value;
103         if(!subfield) subfield = "_";
104
105         var tag = $n(row, 'advanced.marc.tag').value;
106         if(!tag) return null;
107
108         return { 'term' : term, 'restrict' :  [ { 'tag' : tag, 'subfield' : subfield } ] };
109 }
110
111 function advGenericSearch() {
112         var type = getSelectorVal($('adv_quick_type'));
113         var term = $('adv_quick_text').value;
114         if(!term) return;
115
116         var arg = {};
117
118         switch(type) {
119
120                 case 'isbn' :
121                         arg.page                                        = RRESULT;
122                         arg[PARAM_STYPE]                = "";
123                         arg[PARAM_TERM]         = "";
124                         arg[PARAM_RTYPE]                = RTYPE_ISBN;
125                         arg[PARAM_OFFSET]               = 0;
126                         arg[PARAM_ADVTERM]      = term
127                         break;
128                 
129                 case 'issn' :
130                         arg.page                                        = RRESULT;
131                         arg[PARAM_STYPE]                = "";
132                         arg[PARAM_TERM]         = "";
133                         arg[PARAM_ADVTERM]      = term;
134                         arg[PARAM_OFFSET]               = 0;
135                         arg[PARAM_RTYPE]                = RTYPE_ISSN;
136                         break;
137
138                 case 'tcn' :
139                         arg.page                                        = RRESULT;
140                         arg[PARAM_STYPE]                = "";
141                         arg[PARAM_TERM]         = "";
142                         arg[PARAM_ADVTERM]      = term;
143                         arg[PARAM_OFFSET]               = 0;
144                         arg[PARAM_RTYPE]                = RTYPE_TCN;
145                         break;
146
147
148                 case 'cn':
149                         arg.page                        = CNBROWSE;
150                         arg[PARAM_CN]   = term;
151                         break;
152
153                 default: alert('not done yet');
154
155         }
156
157         if(arg.page) goTo(buildOPACLink(arg));
158 }
159
160