+++ /dev/null
-\r
-/* captures extraneous info from each record */\r
-\r
-var subjectCache = {};\r
-var authorCache = {};\r
-var seriesCache = {};\r
-\r
-function resultBuildCaches(records) {\r
- for( var r in records ) {\r
- var rec = records[r];\r
- for( var s in rec.subject() ) \r
- subjectCache[s] == null ? subjectCache[s] = 1 : subjectCache[s]++;\r
- authorCache[rec.author()] = 1;\r
- for( var s in rec.series() ) seriesCache[rec.series()[s]] = 1;\r
- }\r
-}\r
-\r
-function resultSortSubjects(a, b) { return -(a.count - b.count); } /* sort in reverse */\r
-function resultDrawSubjects() {\r
-\r
- var subjs = [];\r
- for( var s in subjectCache )\r
- subjs.push( { sub : s, count : subjectCache[s] } );\r
- subjs.sort(resultSortSubjects);\r
-\r
- var ss = [];\r
- for( var s in subjs ) ss.push(subjs[s].sub);\r
-\r
- resultDrawSidebarTrees( \r
- STYPE_SUBJECT, \r
- "subjectSidebarTree", ss, \r
- $("subject_tree_sidebar"), \r
- $("subject_sidebar_tree_div") );\r
-}\r
-\r
-function resultDrawAuthors() {\r
- var auths = new Array();\r
- for( var s in authorCache ) auths.push(s);\r
-\r
- resultDrawSidebarTrees( \r
- STYPE_AUTHOR, \r
- "authorSidebarTree", auths.sort(), \r
- $("author_tree_sidebar"), \r
- $("author_sidebar_tree_div") );\r
-}\r
-\r
-function resultDrawSeries() {\r
- var sers = new Array();\r
- for( var s in seriesCache ) sers.push(s);\r
- resultDrawSidebarTrees( \r
- STYPE_SERIES, \r
- "seriesSidebarTree", sers.sort(), \r
- $("series_tree_sidebar"), \r
- $("series_sidebar_tree_div") );\r
-}\r
-\r
-var IESux = true;\r
-\r
-function resultDrawSidebarTrees( stype, treeName, items, wrapperNode, destNode ) {\r
- if(findCurrentPage()=="rdetail") return;\r
- eval("tree = " + treeName);\r
-\r
- var xrefCache = [];\r
- var found = false;\r
- var x = 0;\r
- for( var i in items ) {\r
-\r
- if(isNull(items[i])) continue;\r
-\r
- /* again, IE is a turd */\r
- if(IE) { if(x++ > 5) break; }\r
- else { if(x++ > 7) break; }\r
-\r
- found = true;\r
-\r
- var item = normalize(truncate(items[i], 65));\r
- var args = {};\r
- var href = resultQuickLink( items[i], stype );\r
- tree.addNode( stype + "_" + items[i], treeName + 'Root', item, href );\r
-\r
-// if( !IE ) resultFireXRefReq(treeName, stype, items[i]);\r
-\r
- var a = {};\r
- a.type = stype;\r
- a.term = item;\r
- xrefCache.push(a);\r
- }\r
-\r
- if(found) {\r
- unHideMe(wrapperNode);\r
-// if(IE) resultFireXRefSingle(treeName, xrefCache, stype);\r
- /* XXX */ // disabled auth lookups for now\r
-\r
- if( DO_AUTHORITY_LOOKUPS ) {\r
- resultFireXRefBatch(treeName, xrefCache, stype);\r
- }\r
- }\r
-}\r
-\r
-/* XXX */\r
-function resultFireXRefBatch(treeName, xrefCache, stype) {\r
- var query = [];\r
- for( var i = 0; i != xrefCache.length; i++ ) {\r
- var topic = xrefCache[i];\r
- query.push( [ topic.type, topic.term ] );\r
- }\r
- var req = new Request(FETCH_CROSSREF_BATCH, query);\r
- var tree;\r
- eval('tree=' + treeName);\r
- req.request._tree = tree;\r
- req.request._stype = stype;\r
- req.callback(resultRenderXRefTree);\r
- req.send();\r
-}\r
-\r
-var xrefCacheIndex = {};\r
-xrefCacheIndex['subject'] = 0;\r
-xrefCacheIndex['author'] = 0;\r
-xrefCacheIndex['series'] = 0;\r
-\r
-function resultHandleXRefResponse(r) {\r
- resultFireXRefSingle( r._treename, r._cache, r._stype );\r
- resultAppendCrossRef(r);\r
-}\r
-\r
-\r
-function resultFireXRefSingle( treeName, xrefCache, stype ) {\r
- var i = xrefCacheIndex[stype]++;\r
- if(xrefCache[i] == null) return;\r
- var item = xrefCache[i].term;\r
- var tree;\r
- eval('tree=' + treeName);\r
- var req = new Request(FETCH_CROSSREF, stype, item);\r
- req.request._tree = tree;\r
- req.request._item = item;\r
- req.request._stype = stype;\r
- req.request._cache = xrefCache;\r
- req.request._treename = treeName;\r
- req.callback(resultHandleXRefResponse);\r
- req.send();\r
-}\r
-\r
-function resultFireXRefReq( treeName, stype, item ) {\r
- var tree;\r
- eval('tree=' + treeName);\r
- var req = new Request(FETCH_CROSSREF, stype, item);\r
- req.request._tree = tree;\r
- req.request._item = item;\r
- req.request._stype = stype;\r
- req.callback(resultAppendCrossRef);\r
- req.send();\r
-}\r
-\r
-\r
-function resultQuickLink( term, type ) {\r
- var args = {};\r
- if(SHOW_MR_DEFAULT) {\r
- args.page = MRESULT;\r
- } else {\r
- args.page = RRESULT;\r
- args[PARAM_RTYPE] = type;\r
- }\r
- args[PARAM_OFFSET] = 0;\r
- args[PARAM_TERM] = term;\r
- args[PARAM_STYPE] = type;\r
- return buildOPACLink(args);\r
-}\r
-\r
-/* XXX */\r
-function resultRenderXRefTree(r) {\r
- var tree = r._tree;\r
- var res = r.getResultObject();\r
- var stype = r._stype;\r
-\r
- for( var c in res ) {\r
- var cls = res[c];\r
- for( var t in cls ) {\r
- var term = res[c][t];\r
- var froms = term['from'];\r
- var alsos = term['also'];\r
- var total = 0;\r
-\r
- for( var i = 0; (total++ < 5 && i < froms.length); i++ ) {\r
- var string = normalize(truncate(froms[i], 45));\r
- if($(stype + '_' + froms[i])) continue;\r
- tree.addNode(stype + '_' + froms[i], \r
- stype + '_' + t, string, resultQuickLink(froms[i],stype));\r
- }\r
- for( var i = 0; (total++ < 10 && i < alsos.length); i++ ) {\r
- var string = normalize(truncate(alsos[i], 45));\r
- if($(stype + '_' + alsos[i])) continue;\r
- tree.addNode(stype + '_' + alsos[i], \r
- stype + '_' + t, string, resultQuickLink(alsos[i],stype));\r
- }\r
- }\r
- }\r
-}\r
-\r
-\r
-/* Addes the see-from/see-also entries for this subject item */\r
-function resultAppendCrossRef(r) {\r
- var tree = r._tree\r
- var item = r._item\r
- var stype = r._stype;\r
- var result = r.getResultObject();\r
- if(!result) return;\r
- var froms = result['from'];\r
- var alsos = result['also'];\r
-\r
- var total = 0;\r
-\r
- for( var i = 0; (total++ < 5 && i < froms.length); i++ ) \r
- resultAddXRefItem( tree, item, stype, froms, i );\r
-\r
- for( var i = 0; (total++ < 10 && i < alsos.length); i++ ) \r
- resultAddXRefItem( tree, item, stype, alsos, i );\r
-}\r
-\r
-/**\r
- * Adds a single entry into the see-from/also sidebar tree \r
- */\r
-var collectedStrings = [];\r
-function resultAddXRefItem(tree, rootItem, stype, arr, idx) {\r
-\r
- var string = normalize(truncate(arr[idx], 45));\r
-\r
- if( string == rootItem ) return;\r
-\r
- if( grep( collectedStrings, \r
- function(a) { return (a == string); }) ) return;\r
-\r
- if($(stype + '_' + arr[idx])) return;\r
-\r
- tree.addNode(stype + '_' + arr[idx], \r
- stype + '_' + rootItem, string, resultQuickLink(arr[idx],stype));\r
-\r
- collectedStrings.push(string);\r
-}\r
-\r
-\r
-\r
-\r
-\r
-\r