//var langs_with_pos =["da","de","en","nl","pt"]; var langs_with_pos =["en","de","pt","da","nl", "sv"]; var langs_without_pos =["af","ar","bg","bn","cs","el","es","et","fa","fi","fr","he","hi","hr","hu","id","it","ja","kn","ko","lt","lv","mk","ml","mr","ne","no","pa","pl","ro","ru","sk","sl","so","sq","sv","sw","ta","te","th","tl","tr","uk","ur","vi","zh-cn","zh-tw"]; var num_rows = 20; function lang_pos_toggle(event) { var $this =$(this); var checked_state = $this.prop("checked"); var id = $this.attr("id"); var split_id = id.split("-"); var related_id = split_id[0] + "-pos-choice"; //console.log("checked state = " + checked_state); var disable_state = !checked_state; $('#'+related_id + " *").prop('disabled',disable_state); }; function ajax_error(jqXHR, textStatus, errorThrown) { alert('An error occurred... Look at the console (F12 or Ctrl+Shift+I, Console tab) for more information!'); console.log('jqXHR:' + jqXHR); console.log('textStatus:' + textStatus); console.log('errorThrown:' + errorThrown); } function add_titles(json_data) { $.each( json_data, function( htid_with_prefix, htid_val ) { var htid = htid_with_prefix.replace(/^htid:/,""); $.each(htid_val.records, function( internalid, metadata ) { var title = metadata.titles[0]; $("[name='"+htid+"']").each(function() {$(this).html(title)}); console.log(htid + ", title = " + metadata.titles[0]); }); }); } function show_new_results(delta) { $('.search-in-progress').css("cursor","wait"); var start = parseInt(store_search_args.start) store_search_args.start = start + parseInt(delta); $.ajax({ type: 'GET', url: store_search_action, data: store_search_args, dataType: 'json', success: show_results, error: ajax_error }); } function stream_generate_item(line,id,title) { var css_class = (line%2 == 0) ? 'class="evenline"' : 'class="oddline"'; var html_item = ""; var babel_url = "https://babel.hathitrust.org/cgi/pt?id="+id+";view=1up;seq="+1; html_item += '

'; //html_item += '
'; html_item += '' + id + ': ' + title + ''; html_item += '

'; return html_item; } function generate_item(line,id,id_pages) { var css_class = (line%2 == 0) ? 'class="evenline"' : 'class="oddline"'; var html_item = ""; var id_pages_len = id_pages.length; for (var pi=0; pi1) { if (pi==0) { html_item += '

'; html_item += 'Loading ...
'; html_item += id + ': seq ' + seqnum + ' '; } else { html_item += ', seq ' + seqnum + ' '; //var result_item = '' + id + ', seq ' + seqnum + ''; //result_item += ' Loading ...'; //html_item += '

'+result_item+'

'; } } else { html_item += '

'; html_item += ' Loading ...
'; html_item += '' + id + ', seq ' + seqnum + ''; html_item += '

'; } } if (id_pages_len>1) { html_item += "

"; } return html_item; } function stream_show_results(jsonData) { var docs = jsonData["result-set"].docs; var num_docs = docs.length -1; $('.search-in-progress').css("cursor","auto"); var $search_results = $('#search-results'); if (num_docs>0) { $search_results.html("

Results: " + num_docs + " volumes matched

"); /* var from = parseInt(store_search_args.start); var to = from + num_rows; $search_results.append("

Showing matches: "+from+"-" + to + "

"); */ } else { $search_results.html("

No volumes matched your query

"); } for (var i=0; i0) { $search_results.html("

Results: " + num_found + " pages matched

"); var from = parseInt(store_search_args.start); var to = from + num_rows; $search_results.append("

Showing matches: "+from+"-" + to + "

"); } else { $search_results.html("

No pages matched your query

"); } // https://babel.hathitrust.org/cgi/pt?id=hvd.hnnssu;view=1up;seq=11 var htids = []; var prev_id = null; var prev_pages = []; var i=0; var line_num = 0; while (i' + id + ', page ' + page + ''; // result_item += ' Loading ...'; // $search_results.append('

'+result_item+'

'); htids.push("htid:"+id); prev_id = id; i++; } var html_item = generate_item(line_num,prev_id,prev_pages); $search_results.append(html_item); document.location.href="#search-results-anchor"; var next_prev = '

'; $search_results.append(next_prev); $('#search-prev').click(function(event) { show_new_results(-1*num_rows); }); $('#search-next').click(function(event) { show_new_results(num_rows); }); var search_start = store_search_args.start; if (search_start==0) { $('#search-prev').hide(); } // Example URL for catalog metadata (multiple items) // http://catalog.hathitrust.org/api/volumes/brief/json/id:552;lccn:70628581|isbn:0030110408 var htids_str = htids.join("|",htids); var cat_url = "http://catalog.hathitrust.org/api/volumes/brief/json/" + htids_str; $.ajax({ url: cat_url, dataType: 'jsonp', jsonpCallback: "add_titles" }); //var json_pretty = JSON.stringify(jsonData.response, null, '\t'); //$('#search-results').text(json_pretty) } var store_search_args = null; var store_search_action = null; var group_by_vol_checked = 0; function expand_field_lang_pos(q_text,langs_with_pos,langs_without_pos,search_all_checked) { var fields = []; var universal_pos_tags = [ "VERB", "NOUN", "ADJ", "ADV", "ADP", "CONJ", "DET", "NUM", "PRT", "X" ]; for (var li=0; li pos and lang field var query_terms = query.split(/\s+/); var query_terms_len = query_terms.length; var bool_query_term = []; var i=0; var prev_bool = ""; for (var i=0; i0) { if (prev_bool == "") { prev_bool = "AND"; } } var expanded_term = expand_field_lang_pos(term,langs_with_pos,langs_without_pos,search_all_checked) term = "(" + expanded_term + ")"; if (prev_bool != "") { bool_query_term.push(prev_bool); prev_bool = ""; } bool_query_term.push(term); } } var bool_query = bool_query_term.join(" "); return bool_query; } function stream_submit_action(event) { event.preventDefault(); $('.search-in-progress').css("cursor","wait"); var vq_text = $('#vq').val(); store_search_action = $('#search-form').attr("action"); var arg_indent = $('#indent').attr('value'); var arg_wt = $('#wt').attr('value'); var arg_start = $('#start').attr('value'); var arg_rows = $('#rows').attr('value'); var q_text = $('#q').val(); group_by_vol_checked = $('#group-results-by-id:checked').length; if ((q_text === "") && (vq_text === "")) { $('.search-in-progress').css("cursor","auto"); alert("No query term entered"); return; } var expr_all = ""; var expr_md = ""; var expr_tx = ""; if (vq_text !== "") { // simplified case of issuing a volume-based metadata query //expr=search(col,q,fl,sort,rows) //var expr = "expr=search("; expr_md = "search("; expr_md += "htrc-full-ef20"; expr_md += ",q=\""+vq_text+"\""; expr_md += ",fl=\"volumeid_s,id,title_t\""; expr_md += ",sort=\"id asc"+"\""; expr_md += ",indent=\""+arg_indent+"\""; expr_md += ",wt=\""+arg_wt+"\""; expr_md += ",start=\""+arg_start+"\""; expr_md += ",rows=\""+arg_rows+"\""; expr_md += ")"; store_search_args = { q: vq_text, indent: arg_indent, wt: arg_wt, start: arg_start, rows: arg_rows }; } if (q_text !== "") { var fields = []; var universal_pos_tags = [ "VERB", "NOUN", "ADJ", "ADV", "ADP", "CONJ", "DET", "NUM", "PRT", "X" ]; var arg_q = ""; var split_q_text = q_text.split(/\s+/); for (var qi=0; qi0) { arg_q += " OR "; } arg_q += fields.join(" OR "); } // end of for each split q_text // Example search on one of the htrc-full-ef fields is: // q=en_NOUN_htrctoken:farming store_search_args = { q: arg_q, indent: arg_indent, wt: arg_wt, start: arg_start, rows: arg_rows }; store_search_args.sort="id asc"; store_search_args.fl="volumeid_s,id"; var expr_tx = "search(htrc-full-ef20"; for (var k in store_search_args) { if (store_search_args.hasOwnProperty(k)) { var v = store_search_args[k]; expr_tx += "," + k + "=\"" + v + "\""; } } expr_tx += ")"; } if ((expr_md != "") && (expr_tx != "")) { expr = "expr=intersect(" + expr_md + "," + expr_tx + ", on=\"id=volumeid_s\")"; } else if (expr_md != "") { expr = "expr=" + expr_md; } else if (expr_tx != "") { expr = "expr=" + expr_tx; } else { // both empty console.log("Warning: query was empty"); } $.ajax({ type: 'GET', url: store_search_action, data: expr, dataType: 'json', success: stream_show_results, error: ajax_error }); } function submit_action(event) { event.preventDefault(); $('.search-in-progress').css("cursor","wait"); store_search_action = $('#search-form').attr("action"); var arg_indent = $('#indent').attr('value'); var arg_wt = $('#wt').attr('value'); var arg_start = $('#start').attr('value'); var arg_rows = $('#rows').attr('value'); var q_text = $('#q').val(); group_by_vol_checked = $('#group-results-by-id:checked').length; var search_all_checked = $('#search-all-langs:checked').length; console.log("*** search all checked = " + search_all_checked); if (q_text === "") { $('.search-in-progress').css("cursor","auto"); alert("No query term entered"); return; } arg_q = expand_query_field_and_boolean(q_text,langs_with_pos,langs_without_pos,search_all_checked); if (arg_q == "") { $('.search-in-progress').css("cursor","auto"); alert("No languages selected"); return; } /* var fields = []; var universal_pos_tags = [ "VERB", "NOUN", "ADJ", "ADV", "ADP", "CONJ", "DET", "NUM", "PRT", "X" ]; for (var li=0; li\n'; legend += ' '+lang_full+':\n'; legend += ' \n'; var check_box_list = []; for (var pi=0; pi\n'; check_box += ' \n'; check_box_list.push(check_box); } var fieldset = ""; var opt_showhide_class = (li>0) ? 'class="show-hide-lang"' : ""; if (li==1) { fieldset += ''; } fieldset += '
\n'; fieldset += legend; fieldset += '
\n'; var check_box_join = check_box_list.join(' '); fieldset += check_box_join; fieldset += '
\n'; fieldset += '
\n'; $pos_fieldsets.append(fieldset); $('#'+l+'-enabled').click(lang_pos_toggle); if (l == "en") { $('#en-pos-choice *').prop('disabled',false); } else { $('#'+l+'-pos-choice *').prop('disabled',true); } } //$('#en-enabled').click(lang_pos_toggle); //$('#de-enabled').click(lang_pos_toggle); //$('#de-pos-choice *').prop('disabled',true); show_hide_lang() } function show_hide_lang() { $( "#show-hide-lang" ).click(function(event) { event.preventDefault(); if($('.show-hide-lang:visible').length) { $('.show-hide-lang').hide("slide", {direction: "up" } , 1000); $('#show-hide-lang').html("Show other languages ..."); } else { $('.show-hide-lang').show("slide", {direction: "up" } , 1000); $('#show-hide-lang').html("Hide other languages ..."); } }); } function generate_other_langs() { // setup other languages // for each 'langs_without_pos' generate HTML of the form: // French var $other_langs = $('#other-langs'); for (var i=0; i'; /* if (lang === "zh-cn") { console.log("Mapping zh-cn => zh"); lang = "zh"; } if (lang === "zh-tw") { console.log("Mapping zh-tw => zh"); lang = "zh"; } */ var lang_full = isoLangs[lang].name; var lang_native_full = isoLangs[lang].nativeName; var opt_title = (lang_full !== lang_native_full) ? 'title="'+lang_native_full+'"' : ""; labeled_checkbox += ''; //labeled_checkbox += '\n'; labeled_checkbox += ' '; $other_langs.append(labeled_checkbox); } } $(function() { generate_pos_langs(); generate_other_langs(); if ($('#search-submit').length>0) { $('#search-submit').click(submit_action); } if ($('#stream-search-submit').length>0) { $('#stream-search-submit').click(stream_submit_action); } });