]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/opac/skin/default/js/advanced.js
added ability to clear search params before populating
[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
17 function advISBNRun() {
18         var isbn = $('opac.advanced.quick.isbn').value;
19         if(!isbn) return;
20         var arg                                 = {};
21         arg.page                                        = MRESULT;
22         arg[PARAM_STYPE]                = "";
23         arg[PARAM_TERM]         = "";
24         arg[PARAM_ADVTERM]      = isbn;
25         arg[PARAM_OFFSET]               = 0;
26         arg[PARAM_ADVTYPE]      = ADVTYPE_ISBN;
27         goTo(buildOPACLink(arg));
28 }
29
30 function advISSNRun() {
31         var issn = $('opac.advanced.quick.issn').value;
32         if(!issn) return;
33         var arg                                 = {};
34         arg.page                                        = MRESULT;
35         arg[PARAM_STYPE]                = "";
36         arg[PARAM_TERM]         = "";
37         arg[PARAM_ADVTERM]      = issn;
38         arg[PARAM_OFFSET]               = 0;
39         arg[PARAM_ADVTYPE]      = ADVTYPE_ISSN;
40         goTo(buildOPACLink(arg));
41 }
42
43 function advCNRun() {
44         var cn = $('opac.advanced.quick.cn').value;
45         if(!cn) return;
46         var arg                 = {};
47         arg.page                        = CNBROWSE;
48         arg[PARAM_CN]   = cn;
49         goTo(buildOPACLink(arg));
50 }
51
52
53 function advAddMARC() {
54         var newrow = $('advanced.marc.template').cloneNode(true);
55         $n(newrow, 'advanced.marc.tag').value = "";
56         $n(newrow, 'advanced.marc.subfield').value = "";
57         $n(newrow, 'advanced.marc.value').value = "";
58         $('advanced.marc.tbody').insertBefore(newrow, $('advanced.marc.submit.row'));
59 }
60
61 function advMARCRun() {
62
63         var t = $('advanced.marc.tbody');
64         var searches = [];
65
66         var children = t.getElementsByTagName('tr');
67         for( var c in children ) {
68                 var child = children[c];
69                 if(!(child && child.innerHTML)) continue;
70                 var val = advExtractMARC(child);
71                 if(val) searches.push(val);
72         }
73
74         if(searches.length == 0) return;
75
76         var arg = {};
77         arg.page = RRESULT;
78         arg[PARAM_FORM] = 'all'
79         arg[PARAM_RTYPE] = RTYPE_MARC;
80         arg[PARAM_OFFSET] = 0;
81         arg[PARAM_DEPTH]        = depthSelGetDepth();
82         arg[PARAM_LOCATION]     = depthSelGetNewLoc();
83         arg[PARAM_SEARCHES] = js2JSON(searches);
84         arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
85         arg[PARAM_TERM] = "";
86
87         goTo(buildOPACLink(arg));
88 }
89
90
91 /* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */
92 function advExtractMARC(row) {
93         if(!row || row.id == 'advanced.marc.submit.row') return null;
94         var term = $n(row, 'advanced.marc.value').value;
95         if(!term) return null;
96
97         var subfield = $n(row, 'advanced.marc.subfield').value;
98         if(!subfield) subfield = "_";
99
100         var tag = $n(row, 'advanced.marc.tag').value;
101         if(!tag) return null;
102
103         return { 'term' : term, 'restrict' :  [ { 'tag' : tag, 'subfield' : subfield } ] };
104 }
105