source: other-projects/hathitrust/wcsa/extracted-features-solr/trunk/web-portal/index.js@ 31613

Last change on this file since 31613 was 31613, checked in by davidb, 7 years ago

Multiple word support in POS search box. Tidy up of anchor for search results

File size: 23.2 KB
Line 
1
2//var langs_with_pos =["da","de","en","nl","pt"];
3var langs_with_pos =["en","de","pt","da","nl", "sv"];
4var 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"];
5
6var num_rows = 20;
7
8function lang_pos_toggle(event) {
9 var $this =$(this);
10 var checked_state = $this.prop("checked");
11
12 var id = $this.attr("id");
13 var split_id = id.split("-");
14 var related_id = split_id[0] + "-pos-choice";
15
16 //console.log("checked state = " + checked_state);
17
18 var disable_state = !checked_state;
19 $('#'+related_id + " *").prop('disabled',disable_state);
20};
21
22function ajax_error(jqXHR, textStatus, errorThrown) {
23 alert('An error occurred... Look at the console (F12 or Ctrl+Shift+I, Console tab) for more information!');
24
25 console.log('jqXHR:' + jqXHR);
26 console.log('textStatus:' + textStatus);
27 console.log('errorThrown:' + errorThrown);
28}
29
30
31function add_titles(json_data) {
32 $.each( json_data, function( htid_with_prefix, htid_val ) {
33 var htid = htid_with_prefix.replace(/^htid:/,"");
34
35 $.each(htid_val.records, function( internalid, metadata ) {
36 var title = metadata.titles[0];
37 $("[name='"+htid+"']").each(function() {$(this).html(title)});
38 console.log(htid + ", title = " + metadata.titles[0]);
39 });
40 });
41}
42
43function show_new_results(delta)
44{
45 $('.search-in-progress').css("cursor","wait");
46
47 var start = parseInt(store_search_args.start)
48
49 store_search_args.start = start + parseInt(delta);
50
51 $.ajax({
52 type: 'GET',
53 url: store_search_action,
54 data: store_search_args,
55 dataType: 'json',
56 success: show_results,
57 error: ajax_error
58 });
59}
60
61function 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
79function generate_item(line,id,id_pages)
80{
81 var css_class = (line%2 == 0) ? 'class="evenline"' : 'class="oddline"';
82
83 var html_item = "";
84
85 var id_pages_len = id_pages.length;
86
87 for (var pi=0; pi<id_pages_len; pi++) {
88 var page = id_pages[pi];
89
90 //var seqnum = page - 1;
91 //var seqnum = page + 1;
92 var seqnum = page;
93 var babel_url = "https://babel.hathitrust.org/cgi/pt?id="+id+";view=1up;seq="+seqnum;
94
95 if (id_pages_len>1) {
96
97 if (pi==0) {
98 html_item += '<p ' + css_class + '>';
99 html_item += '<span style="font-style: italic;" name="'+id+'"><span style="cursor: progress;">Loading ...</span></span><br>';
100
101
102 html_item += id + ': <a target="_blank" href="' + babel_url + '">seq ' + seqnum + '</a> ';
103 }
104 else {
105 html_item += ', <a target="_blank" href="' + babel_url + '">seq ' + seqnum + '</a> ';
106
107 //var result_item = '<a target="_blank" href="' + babel_url + '">' + id + ', seq ' + seqnum + '</a>';
108 //result_item += ' <span style="font-style: italic;" name="'+id+'"><span style="cursor: progress;">Loading ...</span></span>';
109 //html_item += '<p ' + css_class + '>'+result_item+'</p>';
110 }
111 }
112 else {
113 html_item += '<p ' + css_class + '>';
114 html_item += ' <span style="font-style: italic;" name="'+id+'"><span style="cursor: progress;">Loading ...</span></span><br>';
115 html_item += '<a target="_blank" href="' + babel_url + '">' + id + ', seq ' + seqnum + '</a>';
116 html_item += '</p>';
117 }
118
119 }
120
121 if (id_pages_len>1) {
122 html_item += "</p>";
123 }
124
125 return html_item;
126}
127
128function 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}
226
227
228function show_results(jsonData) {
229 var response = jsonData.response;
230 var num_found = response.numFound;
231 var docs = response.docs;
232 var num_docs = docs.length;
233
234 $('.search-in-progress').css("cursor","auto");
235
236 var $search_results = $('#search-results');
237
238 if (num_docs>0) {
239 $search_results.html("<p>Results: " + num_found + " pages matched</p>");
240 var from = parseInt(store_search_args.start);
241 var to = from + num_rows;
242 $search_results.append("<p>Showing matches: "+from+"-" + to + "</p>");
243 }
244 else {
245 $search_results.html("<p>No pages matched your query</p>");
246 }
247
248
249 // https://babel.hathitrust.org/cgi/pt?id=hvd.hnnssu;view=1up;seq=11
250
251 var htids = [];
252
253 var prev_id = null;
254 var prev_pages = [];
255
256 var i=0;
257 var line_num = 0;
258 while (i<num_docs) {
259// for (var i=0; i<num_docs; i++) {
260 var doc = docs[i];
261 var id_and_page = doc.id.split(".page-");
262 var id = id_and_page[0];
263 var seqnum = parseInt(id_and_page[1]) +1; // fix up ingest error
264 //var page = seqnum+1;
265 //var page = seqnum-1;
266 var page = seqnum;
267
268 if ((prev_id != null) && (id != prev_id)) {
269 // time to output previous item
270 var html_item = generate_item(line_num,prev_id,prev_pages);
271 $search_results.append(html_item);
272 line_num++;
273 prev_pages = [page];
274 }
275 else {
276 // accumulate pages
277 prev_pages.push(page)
278 }
279
280// var css_class = (i%2 == 0) ? 'class="evenline"' : 'class="oddline"';
281// //var restful_safe_id = id.replace(/\./g,",").replace(/:/g, "+").replace(/\//g, "=");
282
283// var babel_url = "https://babel.hathitrust.org/cgi/pt?id="+id+";view=1up;seq="+seqnum;
284
285// var result_item = '<a target="_blank" href="' + babel_url + '">' + id + ', page ' + page + '</a>';
286// result_item += ' <span style="font-style: italic;" name="'+id+'"><span style="cursor: progress;">Loading ...</span></span>';
287// $search_results.append('<p ' + css_class + '>'+result_item+'</p>');
288
289 htids.push("htid:"+id);
290
291 prev_id = id;
292 i++;
293 }
294
295 var html_item = generate_item(line_num,prev_id,prev_pages);
296 $search_results.append(html_item);
297
298
299 document.location.href="#search-results-anchor";
300
301 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>';
302
303 $search_results.append(next_prev);
304 $('#search-prev').click(function(event) { show_new_results(-1*num_rows); });
305 $('#search-next').click(function(event) { show_new_results(num_rows); });
306
307 var search_start = store_search_args.start;
308 if (search_start==0) {
309 $('#search-prev').hide();
310 }
311
312 // Example URL for catalog metadata (multiple items)
313 // http://catalog.hathitrust.org/api/volumes/brief/json/id:552;lccn:70628581|isbn:0030110408
314
315 var htids_str = htids.join("|",htids);
316 var cat_url = "http://catalog.hathitrust.org/api/volumes/brief/json/" + htids_str;
317 $.ajax({
318 url: cat_url,
319 dataType: 'jsonp',
320 jsonpCallback: "add_titles"
321 });
322
323
324 //var json_pretty = JSON.stringify(jsonData.response, null, '\t');
325 //$('#search-results').text(json_pretty)
326}
327
328var store_search_args = null;
329var store_search_action = null;
330
331var group_by_vol_checked = 0;
332
333
334function expand_field_lang_pos(q_text,langs_with_pos,langs_without_pos,search_all_checked)
335{
336 var fields = [];
337 var universal_pos_tags = [ "VERB", "NOUN", "ADJ", "ADV", "ADP", "CONJ", "DET", "NUM", "PRT", "X" ];
338
339 for (var li=0; li<langs_with_pos.length; li++) {
340 var lang = langs_with_pos[li];
341 var lang_enabled_id = lang + "-enabled";
342 var $lang_enabled_cb = $('#'+lang_enabled_id);
343 if ($lang_enabled_cb.is(':checked')) {
344 console.log("Extracting POS tags for: " + lang);
345
346 for (var ti=0; ti<universal_pos_tags.length; ti++) {
347 var tag = universal_pos_tags[ti];
348 var lang_tag_id = lang+"-"+tag+"-htrctoken-cb";
349 var $lang_tag_cb = $('#'+lang_tag_id);
350 if (search_all_checked || ($lang_tag_cb.is(':checked'))) {
351 var lang_tag_field = lang+"_"+tag+"_htrctoken";
352 fields.push(lang_tag_field+":"+q_text);
353 }
354 }
355 }
356 }
357
358 for (var li=0; li<langs_without_pos.length; li++) {
359 var lang = langs_without_pos[li];
360 var lang_enabled_id = lang + "-enabled";
361 var $lang_enabled_cb = $('#'+lang_enabled_id);
362
363 if (search_all_checked || ($lang_enabled_cb.is(':checked'))) {
364 console.log("Adding in non-POS field for: " + lang);
365 var lang_tag_field = lang+"_htrctoken";
366 fields.push(lang_tag_field+":"+q_text);
367 }
368 }
369
370 var fields_str = fields.join(" OR ");
371
372 return fields_str;
373}
374
375function expand_query_field_and_boolean(query,langs_with_pos,langs_without_pos,search_all_checked)
376{
377 // boolean terms
378 // => pos and lang field
379
380 var query_terms = query.split(/\s+/);
381 var query_terms_len = query_terms.length;
382
383 var bool_query_term = [];
384
385 var i=0;
386 var prev_bool = "";
387
388 for (var i=0; i<query_terms_len; i++) {
389 var term = query_terms[i];
390 if (term.match(/^(and|or)$/i)) {
391 prev_bool = term.toUpperCase();
392 }
393 else {
394 if (i>0) {
395 if (prev_bool == "") {
396 prev_bool = "AND";
397 }
398 }
399
400 var expanded_term = expand_field_lang_pos(term,langs_with_pos,langs_without_pos,search_all_checked)
401
402 term = "(" + expanded_term + ")";
403
404 if (prev_bool != "") {
405 bool_query_term.push(prev_bool);
406 prev_bool = "";
407 }
408 bool_query_term.push(term);
409 }
410 }
411
412 var bool_query = bool_query_term.join(" ");
413
414 return bool_query;
415}
416
417
418function 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
571function submit_action(event)
572{
573 event.preventDefault();
574
575 $('.search-in-progress').css("cursor","wait");
576
577 store_search_action = $('#search-form').attr("action");
578
579 var arg_indent = $('#indent').attr('value');
580 var arg_wt = $('#wt').attr('value');
581 var arg_start = $('#start').attr('value');
582 var arg_rows = $('#rows').attr('value');
583 var q_text = $('#q').val();
584
585 group_by_vol_checked = $('#group-results-by-id:checked').length;
586 var search_all_checked = $('#search-all-langs:checked').length;
587 console.log("*** search all checked = " + search_all_checked);
588
589 if (q_text === "") {
590 $('.search-in-progress').css("cursor","auto");
591 alert("No query term entered");
592 return;
593 }
594
595 arg_q = expand_query_field_and_boolean(q_text,langs_with_pos,langs_without_pos,search_all_checked);
596
597 if (arg_q == "") {
598 $('.search-in-progress').css("cursor","auto");
599 alert("No languages selected");
600 return;
601 }
602
603 /*
604 var fields = [];
605 var universal_pos_tags = [ "VERB", "NOUN", "ADJ", "ADV", "ADP", "CONJ", "DET", "NUM", "PRT", "X" ];
606
607 for (var li=0; li<langs_with_pos.length; li++) {
608 var lang = langs_with_pos[li];
609 var lang_enabled_id = lang + "-enabled";
610 var $lang_enabled_cb = $('#'+lang_enabled_id);
611 if ($lang_enabled_cb.is(':checked')) {
612 console.log("Extracting POS tags for: " + lang);
613
614 for (var ti=0; ti<universal_pos_tags.length; ti++) {
615 var tag = universal_pos_tags[ti];
616 var lang_tag_id = lang+"-"+tag+"-htrctoken-cb";
617 var $lang_tag_cb = $('#'+lang_tag_id);
618 if (search_all_checked || ($lang_tag_cb.is(':checked'))) {
619 var lang_tag_field = lang+"_"+tag+"_htrctoken";
620 fields.push(lang_tag_field+":"+q_text);
621 }
622 }
623 }
624 }
625
626 for (var li=0; li<langs_without_pos.length; li++) {
627 var lang = langs_without_pos[li];
628 var lang_enabled_id = lang + "-enabled";
629 var $lang_enabled_cb = $('#'+lang_enabled_id);
630
631 if (search_all_checked || ($lang_enabled_cb.is(':checked'))) {
632 console.log("Adding in non-POS field for: " + lang);
633 var lang_tag_field = lang+"_htrctoken";
634 fields.push(lang_tag_field+":"+q_text);
635 }
636 }
637 */
638
639 /*
640 if (fields.length == 0) {
641 $('.search-in-progress').css("cursor","auto");
642 alert("No languages selected");
643 return;
644 }
645
646 var arg_q = fields.join(" OR ");
647 */
648
649 // Example search on one of the htrc-full-ef fields is:
650 // q=en_NOUN_htrctoken:farming
651
652 store_search_args = { q: arg_q, indent: arg_indent, wt: arg_wt, start: arg_start, rows: arg_rows };
653
654 if (group_by_vol_checked) {
655 store_search_args.sort="id asc";
656 }
657
658
659 $.ajax({
660 type: 'GET',
661 url: store_search_action,
662 data: store_search_args,
663 dataType: 'json',
664 success: show_results,
665 error: ajax_error
666 });
667
668}
669
670function generate_pos_langs()
671{
672 var pos_checkbox = [
673 { pos:"VERB", label:"Verbs", tooltip:"Verbs (all tenses and modes)" },
674 { pos:"NOUN", label:"Nouns", tooltip:"Nouns (common and proper)" },
675 { pos:"ADJ", label:"Adjectives", tooltip: null },
676 { pos:"ADV", label:"Adverbs", tooltip: null },
677 { pos:"ADP", label:"Adpositions", tooltip:"Adpositions (prepositions and postpositions)" },
678 { pos:"CONJ", label:"Conjunctions",tooltip: null },
679 { pos:"DET", label:"Determiners", tooltip: null },
680 { pos:"NUM", label:"Numbers", tooltip:"Cardinal numbers" },
681 { pos:"PRT", label:"Particles", tooltip:"Particles or other function words" },
682 { pos:"X", label:"Other", tooltip:"Other words, such as foreign words, typos, abbreviations"}
683 ];
684
685 var $pos_fieldsets = $('#pos-fieldsets');
686
687 for (var li=0; li<langs_with_pos.length; li++) {
688
689 var l = langs_with_pos[li];
690 var lang_full = isoLangs[l].name;
691 var lang_native_full = isoLangs[l].nativeName;
692 var opt_title = (lang_full !== lang_native_full) ? 'title="'+lang_native_full+'"' : "";
693
694 var opt_enabled = (l == "en") ? 'checked="checked"' : "";
695
696 var legend = "";
697 legend += ' <legend style="margin-bottom: 5px; padding-top: 15px;">\n';
698 legend += ' <input type="checkbox" name="'+l+'-enabled" id="'+l+'-enabled" ' + opt_enabled +'/>\n';
699 legend += ' <span ' + opt_title + '>'+lang_full+':</span>\n';
700 legend += ' </legend>\n';
701
702
703 var check_box_list = [];
704
705 for (var pi=0; pi<pos_checkbox.length; pi++) {
706 var pos_info = pos_checkbox[pi];
707 var pos = pos_info.pos;
708 var label = pos_info.label;
709 var tooltip = pos_info.tooltip;
710 var opt_tooltip = (tooltip != null) ? 'title="'+tooltip+'"' : "";
711
712 var check_box = "";
713 check_box += ' <input type="checkbox" name="'+l+'-'+pos+'-htrctoken-cb" id="'+l+'-'+pos+'-htrctoken-cb" checked="checked" />\n';
714 check_box += ' <label for="'+l+'-'+pos+'-htrctoken-cb" '+opt_tooltip+'>'+label+'</label>\n';
715
716 check_box_list.push(check_box);
717 }
718
719 var fieldset = "";
720 var opt_showhide_class = (li>0) ? 'class="show-hide-lang"' : "";
721
722 if (li==1) {
723 fieldset += '<button id="show-hide-lang">Show other languages ...</button>';
724 }
725
726 fieldset += '<fieldset ' + opt_showhide_class + '>\n';
727 fieldset += legend;
728 fieldset += ' <div id="'+l+'-pos-choice">\n';
729
730 var check_box_join = check_box_list.join('&nbsp;');
731 fieldset += check_box_join;
732
733 fieldset += ' </div>\n';
734 fieldset += '</fieldset>\n';
735
736 $pos_fieldsets.append(fieldset);
737 $('#'+l+'-enabled').click(lang_pos_toggle);
738
739 if (l == "en") {
740 $('#en-pos-choice *').prop('disabled',false);
741 }
742 else {
743 $('#'+l+'-pos-choice *').prop('disabled',true);
744 }
745 }
746
747
748 //$('#en-enabled').click(lang_pos_toggle);
749 //$('#de-enabled').click(lang_pos_toggle);
750 //$('#de-pos-choice *').prop('disabled',true);
751
752 show_hide_lang()
753}
754
755function show_hide_lang()
756{
757 $( "#show-hide-lang" ).click(function(event) {
758 event.preventDefault();
759 if($('.show-hide-lang:visible').length) {
760 $('.show-hide-lang').hide("slide", {direction: "up" } , 1000);
761 $('#show-hide-lang').html("Show other languages ...");
762 }
763 else {
764 $('.show-hide-lang').show("slide", {direction: "up" } , 1000);
765 $('#show-hide-lang').html("Hide other languages ...");
766 }
767 });
768}
769
770function generate_other_langs()
771{
772 // setup other languages
773 // for each 'langs_without_pos' generate HTML of the form:
774 // <input type="checkbox" name="fr-enabled" id="fr-enabled" />French
775 var $other_langs = $('#other-langs');
776
777 for (var i=0; i<langs_without_pos.length; i++) {
778 var lang = langs_without_pos[i];
779 //var labeled_checkbox = '<span style="white-space:nowrap;">\n';
780 var labeled_checkbox = '<nobr>';
781
782 labeled_checkbox += '<input type="checkbox" name="'+lang+'-enabled" id="'+lang+'-enabled" />';
783 /*
784 if (lang === "zh-cn") {
785 console.log("Mapping zh-cn => zh");
786 lang = "zh";
787 }
788 if (lang === "zh-tw") {
789 console.log("Mapping zh-tw => zh");
790 lang = "zh";
791 }
792*/
793 var lang_full = isoLangs[lang].name;
794 var lang_native_full = isoLangs[lang].nativeName;
795 var opt_title = (lang_full !== lang_native_full) ? 'title="'+lang_native_full+'"' : "";
796
797 labeled_checkbox += '<label for="'+lang+'-enabled" style="padding-left: 5px; padding-right: 10px;" ' + opt_title + '>'+lang_full+'</label>';
798 //labeled_checkbox += '</span>\n';
799 labeled_checkbox += '</nobr> ';
800
801 $other_langs.append(labeled_checkbox);
802
803 }
804}
805
806$(function() {
807 generate_pos_langs();
808
809 generate_other_langs();
810
811 if ($('#search-submit').length>0) {
812 $('#search-submit').click(submit_action);
813 }
814
815 if ($('#stream-search-submit').length>0) {
816 $('#stream-search-submit').click(stream_submit_action);
817 }
818
819});
Note: See TracBrowser for help on using the repository browser.