Changeset 31614 for other-projects


Ignore:
Timestamp:
2017-04-20T18:17:56+12:00 (7 years ago)
Author:
davidb
Message:

Separate off stream query page

Location:
other-projects/hathitrust/wcsa/extracted-features-solr/trunk/web-portal
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • other-projects/hathitrust/wcsa/extracted-features-solr/trunk/web-portal/index.js

    r31613 r31614  
    5959}
    6060
    61 function stream_generate_item(line,id,title)
    62 {
    63     var css_class = (line%2 == 0) ? 'class="evenline"' : 'class="oddline"';
    64    
    65     var html_item = "";
    66 
    67 
    68     var babel_url = "https://babel.hathitrust.org/cgi/pt?id="+id+";view=1up;seq="+1;
    69 
    70     html_item += '<p ' + css_class + '>';
    71     //html_item += ' <span style="font-style: italic;" name="'+id+'"></span><br>';
    72     html_item += '<a target="_blank" href="' + babel_url + '">' + id + ': ' + title + '</a>';
    73     html_item += '</p>';
    74 
    75     return html_item;
    76 }
    77 
    78 
    7961function generate_item(line,id,id_pages)
    8062{
     
    126108}
    127109
    128 function stream_show_results(jsonData) {
    129     var docs = jsonData["result-set"].docs;
    130     var num_docs = docs.length -1;
    131 
    132     $('.search-in-progress').css("cursor","auto");
    133    
    134     var $search_results = $('#search-results');
    135 
    136     if (num_docs>0) {
    137     $search_results.html("<p>Results: " + num_docs + " volumes matched</p>");
    138     /*
    139     var from = parseInt(store_search_args.start);
    140     var to = from + num_rows;
    141     $search_results.append("<p>Showing matches: "+from+"-" + to + "</p>");
    142     */
    143     }
    144     else {
    145     $search_results.html("<p>No volumes matched your query</p>");
    146     }
    147 
    148     for (var i=0; i<num_docs; i++) {
    149     var doc = docs[i];
    150     var id = doc.id;
    151     var title = doc.title_t;
    152 
    153     var html_item = stream_generate_item(i,id,title);
    154     $search_results.append(html_item);
    155     }
    156     return;
    157     // ****
    158    
    159     var htids = [];
    160 
    161     var prev_id = null;
    162     var prev_pages = [];
    163    
    164     var i=0;
    165     var line_num = 0;
    166     while (i<num_docs) {
    167 //    for (var i=0; i<num_docs; i++) {
    168     var doc = docs[i];
    169     var id_and_page = doc.id.split(".page-");
    170     var id = id_and_page[0];
    171     var seqnum = parseInt(id_and_page[1]) +1; // fix up ingest error
    172     //var page = seqnum+1;
    173     //var page = seqnum-1;
    174     var page = seqnum;
    175 
    176     if ((prev_id != null) && (id != prev_id)) {
    177         // time to output previous item
    178         var html_item = generate_item(line_num,prev_id,prev_pages);
    179         $search_results.append(html_item);
    180         line_num++;
    181         prev_pages = [page];
    182     }
    183     else {
    184         // accumulate pages
    185         prev_pages.push(page)
    186     }
    187    
    188     htids.push("htid:"+id);
    189 
    190     prev_id = id;
    191     i++;
    192     }
    193    
    194     var html_item = generate_item(line_num,prev_id,prev_pages);
    195     $search_results.append(html_item);
    196 
    197    
    198     document.location.href="#search-results-anchor";
    199    
    200     var next_prev = '<p style="width:100%;"><div id="search-prev" style="float: left;"><a>&lt; Previous</a></div><div id="search-next" style="float: right;"><a>Next &gt;</a></div></p>';
    201    
    202     $search_results.append(next_prev);
    203     $('#search-prev').click(function(event) { show_new_results(-1*num_rows); });
    204     $('#search-next').click(function(event) { show_new_results(num_rows); });
    205 
    206     var search_start = store_search_args.start;
    207     if (search_start==0) {
    208     $('#search-prev').hide();
    209     }
    210    
    211     // Example URL for catalog metadata (multiple items)
    212     // http://catalog.hathitrust.org/api/volumes/brief/json/id:552;lccn:70628581|isbn:0030110408
    213 
    214     var htids_str = htids.join("|",htids);
    215     var cat_url = "http://catalog.hathitrust.org/api/volumes/brief/json/" + htids_str;
    216         $.ajax({
    217         url: cat_url,
    218         dataType: 'jsonp',
    219         jsonpCallback: "add_titles"
    220     });
    221 
    222 
    223     //var json_pretty = JSON.stringify(jsonData.response, null, '\t');
    224     //$('#search-results').text(json_pretty)
    225 }
    226110
    227111
     
    416300
    417301
    418 function stream_submit_action(event)
    419 {
    420     event.preventDefault();
    421 
    422     $('.search-in-progress').css("cursor","wait");
    423 
    424     var vq_text     = $('#vq').val();
    425    
    426     store_search_action = $('#search-form').attr("action");
    427    
    428     var arg_indent = $('#indent').attr('value');
    429     var arg_wt     = $('#wt').attr('value');
    430     var arg_start  = $('#start').attr('value');
    431     var arg_rows   = $('#rows').attr('value');
    432     var q_text     = $('#q').val();
    433 
    434     group_by_vol_checked = $('#group-results-by-id:checked').length;
    435 
    436    
    437     if ((q_text === "") && (vq_text === "")) {
    438     $('.search-in-progress').css("cursor","auto");
    439     alert("No query term entered");
    440     return;
    441     }
    442 
    443     var expr_all = "";
    444     var expr_md = "";
    445     var expr_tx = "";
    446    
    447     if (vq_text !== "") {
    448     // simplified case of issuing a volume-based metadata query
    449     //expr=search(col,q,fl,sort,rows)
    450 
    451    
    452     //var expr = "expr=search(";
    453     expr_md = "search(";
    454     expr_md += "htrc-full-ef20";
    455     expr_md += ",q=\""+vq_text+"\"";
    456     expr_md += ",fl=\"volumeid_s,id,title_t\"";
    457     expr_md += ",sort=\"id asc"+"\"";
    458     expr_md += ",indent=\""+arg_indent+"\"";
    459     expr_md += ",wt=\""+arg_wt+"\"";
    460     expr_md += ",start=\""+arg_start+"\"";
    461     expr_md += ",rows=\""+arg_rows+"\"";
    462     expr_md += ")";
    463    
    464     store_search_args = { q: vq_text, indent: arg_indent, wt: arg_wt,
    465                   start: arg_start, rows: arg_rows };
    466     }
    467 
    468     if (q_text !== "") {
    469    
    470     var fields = [];
    471     var universal_pos_tags = [ "VERB", "NOUN", "ADJ", "ADV", "ADP", "CONJ", "DET", "NUM", "PRT", "X" ];
    472 
    473     var arg_q = "";
    474    
    475     var split_q_text = q_text.split(/\s+/);
    476     for (var qi=0; qi<split_q_text.length; qi++) {
    477         q_text = split_q_text[qi];
    478        
    479         for (var li=0; li<langs_with_pos.length; li++) {
    480         var lang = langs_with_pos[li];
    481         var lang_enabled_id = lang + "-enabled";
    482         var $lang_enabled_cb = $('#'+lang_enabled_id);
    483         if ($lang_enabled_cb.is(':checked')) {
    484             console.log("Extracting POS tags for: " + lang);
    485            
    486             for (var ti=0; ti<universal_pos_tags.length; ti++) {
    487             var tag = universal_pos_tags[ti];
    488             var lang_tag_id = lang+"-"+tag+"-htrctoken-cb";
    489             var $lang_tag_cb = $('#'+lang_tag_id);
    490             if ($lang_tag_cb.is(':checked')) {
    491                 //var lang_tag_field = "xxxx"+lang+"_"+tag+"_htrctoken";
    492                 var lang_tag_field = lang+"_"+tag+"_htrctoken";
    493                 fields.push(lang_tag_field+":"+q_text);
    494             }
    495             }
    496         }
    497         }
    498        
    499         for (var li=0; li<langs_without_pos.length; li++) {
    500         var lang = langs_without_pos[li];
    501         var lang_enabled_id = lang + "-enabled";
    502         var $lang_enabled_cb = $('#'+lang_enabled_id);
    503        
    504         if ($lang_enabled_cb.is(':checked')) {
    505             console.log("Adding in non-POS field for: " + lang);
    506             //var lang_tag_field = "xxxx"+lang+"_htrctoken";
    507             var lang_tag_field = lang+"_htrctoken";
    508             fields.push(lang_tag_field+":"+q_text);     
    509         }
    510         }
    511    
    512         if (fields.length == 0) {
    513         alert("No languages selected");
    514         return;
    515         }
    516 
    517         if (qi>0) {
    518         arg_q += " OR ";
    519         }
    520        
    521         arg_q += fields.join(" OR ");
    522    
    523     } // end of for each split q_text
    524    
    525     // Example search on one of the htrc-full-ef fields is:
    526     //  q=en_NOUN_htrctoken:farming
    527    
    528     store_search_args = { q: arg_q, indent: arg_indent, wt: arg_wt, start: arg_start, rows: arg_rows };
    529 
    530     store_search_args.sort="id asc";
    531     store_search_args.fl="volumeid_s,id";
    532    
    533     var expr_tx = "search(htrc-full-ef20";
    534    
    535     for (var k in store_search_args) {
    536         if (store_search_args.hasOwnProperty(k)) {
    537         var v = store_search_args[k];
    538         expr_tx += "," + k + "=\"" + v + "\"";
    539         }
    540     }
    541     expr_tx += ")";
    542     }
    543    
    544 
    545     if ((expr_md != "") && (expr_tx != "")) {
    546     expr = "expr=intersect(" + expr_md + "," + expr_tx  + ", on=\"id=volumeid_s\")";
    547     }
    548     else if (expr_md != "") {
    549     expr = "expr=" + expr_md;
    550     }
    551     else if (expr_tx != "") {
    552     expr = "expr=" + expr_tx;
    553     }
    554     else {
    555     // both empty
    556     console.log("Warning: query was empty");
    557     }
    558    
    559 
    560     $.ajax({
    561     type: 'GET',
    562     url: store_search_action,
    563     data: expr,
    564     dataType: 'json',
    565     success: stream_show_results,
    566     error: ajax_error
    567     });
    568 
    569 }
    570 
    571302function submit_action(event)
    572303{
     
    813544    }
    814545   
    815     if ($('#stream-search-submit').length>0) {
    816     $('#stream-search-submit').click(stream_submit_action);
    817     }
    818 
    819546});
  • other-projects/hathitrust/wcsa/extracted-features-solr/trunk/web-portal/stream-query.html

    r31570 r31614  
    2929    <script src="iso-639-1.js"></script> <!-- defined var 'isoLangs' -->
    3030    <script src="index.js"></script>
     31    <script src="stream-index.js"></script>
    3132  </head>
    3233  <body>
Note: See TracChangeset for help on using the changeset viewer.