//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 += ' \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';
$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);
}
});