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

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

Solr-stream based search

File size: 20.4 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 store_search_args.start += delta;
48
49 $.ajax({
50 type: 'GET',
51 url: store_search_action,
52 data: store_search_args,
53 dataType: 'json',
54 success: show_results,
55 error: ajax_error
56 });
57}
58
59function stream_generate_item(line,id,title)
60{
61 var css_class = (line%2 == 0) ? 'class="evenline"' : 'class="oddline"';
62
63 var html_item = "";
64
65
66 var babel_url = "https://babel.hathitrust.org/cgi/pt?id="+id+";view=1up;seq="+0;
67
68 html_item += '<p ' + css_class + '>';
69 //html_item += ' <span style="font-style: italic;" name="'+id+'"></span><br>';
70 html_item += '<a target="_blank" href="' + babel_url + '">' + id + ': ' + title + '</a>';
71 html_item += '</p>';
72
73 return html_item;
74}
75
76
77function generate_item(line,id,id_pages)
78{
79 var css_class = (line%2 == 0) ? 'class="evenline"' : 'class="oddline"';
80
81 var html_item = "";
82
83 var id_pages_len = id_pages.length;
84
85 for (var pi=0; pi<id_pages_len; pi++) {
86 var page = id_pages[pi];
87
88 var seqnum = page - 1;
89 var babel_url = "https://babel.hathitrust.org/cgi/pt?id="+id+";view=1up;seq="+seqnum;
90
91 if (id_pages_len>1) {
92
93 if (pi==0) {
94 html_item += '<p ' + css_class + '>';
95 html_item += '<span style="font-style: italic;" name="'+id+'"><span style="cursor: progress;">Loading ...</span></span><br>';
96
97
98 html_item += id + ': <a target="_blank" href="' + babel_url + '">page ' + page + '</a> ';
99 }
100 else {
101 html_item += ', <a target="_blank" href="' + babel_url + '">page ' + page + '</a> ';
102
103 //var result_item = '<a target="_blank" href="' + babel_url + '">' + id + ', page ' + page + '</a>';
104 //result_item += ' <span style="font-style: italic;" name="'+id+'"><span style="cursor: progress;">Loading ...</span></span>';
105 //html_item += '<p ' + css_class + '>'+result_item+'</p>';
106 }
107 }
108 else {
109 html_item += '<p ' + css_class + '>';
110 html_item += ' <span style="font-style: italic;" name="'+id+'"><span style="cursor: progress;">Loading ...</span></span><br>';
111 html_item += '<a target="_blank" href="' + babel_url + '">' + id + ', page ' + page + '</a>';
112 html_item += '</p>';
113 }
114
115 }
116
117 if (id_pages_len>1) {
118 html_item += "</p>";
119 }
120
121 return html_item;
122}
123
124function stream_show_results(jsonData) {
125 var docs = jsonData["result-set"].docs;
126 var num_docs = docs.length -1;
127
128 $('.search-in-progress').css("cursor","auto");
129
130 var $search_results = $('#search-results');
131
132 if (num_docs>0) {
133 $search_results.html("<p>Results: " + num_docs + " volumes matched</p>");
134 /*
135 var from = parseInt(store_search_args.start);
136 var to = from + num_rows;
137 $search_results.append("<p>Showing matches: "+from+"-" + to + "</p>");
138 */
139 }
140 else {
141 $search_results.html("<p>No volumes matched your query</p>");
142 }
143
144 for (var i=0; i<num_docs; i++) {
145 var doc = docs[i];
146 var id = doc.id;
147 var title = doc.title_t;
148
149 var html_item = stream_generate_item(i,id,title);
150 $search_results.append(html_item);
151 }
152 return;
153 // ****
154
155 var htids = [];
156
157 var prev_id = null;
158 var prev_pages = [];
159
160 var i=0;
161 var line_num = 0;
162 while (i<num_docs) {
163// for (var i=0; i<num_docs; i++) {
164 var doc = docs[i];
165 var id_and_page = doc.id.split(".page-");
166 var id = id_and_page[0];
167 var seqnum = parseInt(id_and_page[1]);
168 var page = seqnum+1;
169
170 if ((prev_id != null) && (id != prev_id)) {
171 // time to output previous item
172 var html_item = generate_item(line_num,prev_id,prev_pages);
173 $search_results.append(html_item);
174 line_num++;
175 prev_pages = [page];
176 }
177 else {
178 // accumulate pages
179 prev_pages.push(page)
180 }
181
182 htids.push("htid:"+id);
183
184 prev_id = id;
185 i++;
186 }
187
188 var html_item = generate_item(line_num,prev_id,prev_pages);
189 $search_results.append(html_item);
190
191
192 document.location.href="#search-results-anchor";
193
194 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>';
195
196 $search_results.append(next_prev);
197 $('#search-prev').click(function(event) { show_new_results(-1*num_rows); });
198 $('#search-next').click(function(event) { show_new_results(num_rows); });
199
200 var search_start = store_search_args.start;
201 if (search_start==0) {
202 $('#search-prev').hide();
203 }
204
205 // Example URL for catalog metadata (multiple items)
206 // http://catalog.hathitrust.org/api/volumes/brief/json/id:552;lccn:70628581|isbn:0030110408
207
208 var htids_str = htids.join("|",htids);
209 var cat_url = "http://catalog.hathitrust.org/api/volumes/brief/json/" + htids_str;
210 $.ajax({
211 url: cat_url,
212 dataType: 'jsonp',
213 jsonpCallback: "add_titles"
214 });
215
216
217 //var json_pretty = JSON.stringify(jsonData.response, null, '\t');
218 //$('#search-results').text(json_pretty)
219}
220
221
222function show_results(jsonData) {
223 var response = jsonData.response;
224 var num_found = response.numFound;
225 var docs = response.docs;
226 var num_docs = docs.length;
227
228 $('.search-in-progress').css("cursor","auto");
229
230 var $search_results = $('#search-results');
231
232 if (num_docs>0) {
233 $search_results.html("<p>Results: " + num_found + " pages matched</p>");
234 var from = parseInt(store_search_args.start);
235 var to = from + num_rows;
236 $search_results.append("<p>Showing matches: "+from+"-" + to + "</p>");
237 }
238 else {
239 $search_results.html("<p>No pages matched your query</p>");
240 }
241
242
243 // https://babel.hathitrust.org/cgi/pt?id=hvd.hnnssu;view=1up;seq=11
244
245 var htids = [];
246
247 var prev_id = null;
248 var prev_pages = [];
249
250 var i=0;
251 var line_num = 0;
252 while (i<num_docs) {
253// for (var i=0; i<num_docs; i++) {
254 var doc = docs[i];
255 var id_and_page = doc.id.split(".page-");
256 var id = id_and_page[0];
257 var seqnum = parseInt(id_and_page[1]);
258 var page = seqnum+1;
259
260 if ((prev_id != null) && (id != prev_id)) {
261 // time to output previous item
262 var html_item = generate_item(line_num,prev_id,prev_pages);
263 $search_results.append(html_item);
264 line_num++;
265 prev_pages = [page];
266 }
267 else {
268 // accumulate pages
269 prev_pages.push(page)
270 }
271
272// var css_class = (i%2 == 0) ? 'class="evenline"' : 'class="oddline"';
273// //var restful_safe_id = id.replace(/\./g,",").replace(/:/g, "+").replace(/\//g, "=");
274
275// var babel_url = "https://babel.hathitrust.org/cgi/pt?id="+id+";view=1up;seq="+seqnum;
276
277// var result_item = '<a target="_blank" href="' + babel_url + '">' + id + ', page ' + page + '</a>';
278// result_item += ' <span style="font-style: italic;" name="'+id+'"><span style="cursor: progress;">Loading ...</span></span>';
279// $search_results.append('<p ' + css_class + '>'+result_item+'</p>');
280
281 htids.push("htid:"+id);
282
283 prev_id = id;
284 i++;
285 }
286
287 var html_item = generate_item(line_num,prev_id,prev_pages);
288 $search_results.append(html_item);
289
290
291 document.location.href="#search-results-anchor";
292
293 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>';
294
295 $search_results.append(next_prev);
296 $('#search-prev').click(function(event) { show_new_results(-1*num_rows); });
297 $('#search-next').click(function(event) { show_new_results(num_rows); });
298
299 var search_start = store_search_args.start;
300 if (search_start==0) {
301 $('#search-prev').hide();
302 }
303
304 // Example URL for catalog metadata (multiple items)
305 // http://catalog.hathitrust.org/api/volumes/brief/json/id:552;lccn:70628581|isbn:0030110408
306
307 var htids_str = htids.join("|",htids);
308 var cat_url = "http://catalog.hathitrust.org/api/volumes/brief/json/" + htids_str;
309 $.ajax({
310 url: cat_url,
311 dataType: 'jsonp',
312 jsonpCallback: "add_titles"
313 });
314
315
316 //var json_pretty = JSON.stringify(jsonData.response, null, '\t');
317 //$('#search-results').text(json_pretty)
318}
319
320var store_search_args = null;
321var store_search_action = null;
322
323var group_by_vol_checked = 0;
324
325function stream_submit_action(event)
326{
327 event.preventDefault();
328
329 $('.search-in-progress').css("cursor","wait");
330
331 var vq_text = $('#vq').val();
332
333 store_search_action = $('#search-form').attr("action");
334
335 var arg_indent = $('#indent').attr('value');
336 var arg_wt = $('#wt').attr('value');
337 var arg_start = $('#start').attr('value');
338 var arg_rows = $('#rows').attr('value');
339 var q_text = $('#q').val();
340
341 group_by_vol_checked = $('#group-results-by-id:checked').length;
342
343
344 if ((q_text === "") && (vq_text === "")) {
345 $('.search-in-progress').css("cursor","auto");
346 alert("No query term entered");
347 return;
348 }
349
350 var expr_all = "";
351 var expr_md = "";
352 var expr_tx = "";
353
354 if (vq_text !== "") {
355 // simplified case of issuing a volume-based metadata query
356 //expr=search(col,q,fl,sort,rows)
357
358
359 //var expr = "expr=search(";
360 expr_md = "search(";
361 expr_md += "htrc-full-ef20";
362 expr_md += ",q=\""+vq_text+"\"";
363 expr_md += ",fl=\"volumeid_s,id,title_t\"";
364 expr_md += ",sort=\"id asc"+"\"";
365 expr_md += ",indent=\""+arg_indent+"\"";
366 expr_md += ",wt=\""+arg_wt+"\"";
367 expr_md += ",start=\""+arg_start+"\"";
368 expr_md += ",rows=\""+arg_rows+"\"";
369 expr_md += ")";
370
371 store_search_args = { q: vq_text, indent: arg_indent, wt: arg_wt,
372 start: arg_start, rows: arg_rows };
373 }
374
375 if (q_text !== "") {
376
377 var fields = [];
378 var universal_pos_tags = [ "VERB", "NOUN", "ADJ", "ADV", "ADP", "CONJ", "DET", "NUM", "PRT", "X" ];
379
380 var arg_q = "";
381
382 var split_q_text = q_text.split(/\s+/);
383 for (var qi=0; qi<split_q_text.length; qi++) {
384 q_text = split_q_text[qi];
385
386 for (var li=0; li<langs_with_pos.length; li++) {
387 var lang = langs_with_pos[li];
388 var lang_enabled_id = lang + "-enabled";
389 var $lang_enabled_cb = $('#'+lang_enabled_id);
390 if ($lang_enabled_cb.is(':checked')) {
391 console.log("Extracting POS tags for: " + lang);
392
393 for (var ti=0; ti<universal_pos_tags.length; ti++) {
394 var tag = universal_pos_tags[ti];
395 var lang_tag_id = lang+"-"+tag+"-htrctoken-cb";
396 var $lang_tag_cb = $('#'+lang_tag_id);
397 if ($lang_tag_cb.is(':checked')) {
398 //var lang_tag_field = "xxxx"+lang+"_"+tag+"_htrctoken";
399 var lang_tag_field = lang+"_"+tag+"_htrctoken";
400 fields.push(lang_tag_field+":"+q_text);
401 }
402 }
403 }
404 }
405
406 for (var li=0; li<langs_without_pos.length; li++) {
407 var lang = langs_without_pos[li];
408 var lang_enabled_id = lang + "-enabled";
409 var $lang_enabled_cb = $('#'+lang_enabled_id);
410
411 if ($lang_enabled_cb.is(':checked')) {
412 console.log("Adding in non-POS field for: " + lang);
413 //var lang_tag_field = "xxxx"+lang+"_htrctoken";
414 var lang_tag_field = lang+"_htrctoken";
415 fields.push(lang_tag_field+":"+q_text);
416 }
417 }
418
419 if (fields.length == 0) {
420 alert("No languages selected");
421 return;
422 }
423
424 if (qi>0) {
425 arg_q += " OR ";
426 }
427
428 arg_q += fields.join(" OR ");
429
430 } // end of for each split q_text
431
432 // Example search on one of the htrc-full-ef fields is:
433 // q=en_NOUN_htrctoken:farming
434
435 store_search_args = { q: arg_q, indent: arg_indent, wt: arg_wt, start: arg_start, rows: arg_rows };
436
437 store_search_args.sort="id asc";
438 store_search_args.fl="volumeid_s,id";
439
440 var expr_tx = "search(htrc-full-ef20";
441
442 for (var k in store_search_args) {
443 if (store_search_args.hasOwnProperty(k)) {
444 var v = store_search_args[k];
445 expr_tx += "," + k + "=\"" + v + "\"";
446 }
447 }
448 expr_tx += ")";
449 }
450
451
452 if ((expr_md != "") && (expr_tx != "")) {
453 expr = "expr=intersect(" + expr_md + "," + expr_tx + ", on=\"id=volumeid_s\")";
454 }
455 else if (expr_md != "") {
456 expr = "expr=" + expr_md;
457 }
458 else if (expr_tx != "") {
459 expr = "expr=" + expr_tx;
460 }
461 else {
462 // both empty
463 console.log("Warning: query was empty");
464 }
465
466
467 $.ajax({
468 type: 'GET',
469 url: store_search_action,
470 data: expr,
471 dataType: 'json',
472 success: stream_show_results,
473 error: ajax_error
474 });
475
476}
477
478function submit_action(event)
479{
480 event.preventDefault();
481
482 $('.search-in-progress').css("cursor","wait");
483
484 store_search_action = $('#search-form').attr("action");
485
486 var arg_indent = $('#indent').attr('value');
487 var arg_wt = $('#wt').attr('value');
488 var arg_start = $('#start').attr('value');
489 var arg_rows = $('#rows').attr('value');
490 var q_text = $('#q').val();
491
492 group_by_vol_checked = $('#group-results-by-id:checked').length;
493
494
495 if (q_text === "") {
496 $('.search-in-progress').css("cursor","auto");
497 alert("No query term entered");
498 return;
499 }
500
501 var fields = [];
502 //var langs_with_pos = [ "da", "de", "en", "nl", "pt", "se" ];
503 var universal_pos_tags = [ "VERB", "NOUN", "ADJ", "ADV", "ADP", "CONJ", "DET", "NUM", "PRT", "X" ];
504
505 for (var li=0; li<langs_with_pos.length; li++) {
506 var lang = langs_with_pos[li];
507 var lang_enabled_id = lang + "-enabled";
508 var $lang_enabled_cb = $('#'+lang_enabled_id);
509 if ($lang_enabled_cb.is(':checked')) {
510 console.log("Extracting POS tags for: " + lang);
511
512 for (var ti=0; ti<universal_pos_tags.length; ti++) {
513 var tag = universal_pos_tags[ti];
514 var lang_tag_id = lang+"-"+tag+"-htrctoken-cb";
515 var $lang_tag_cb = $('#'+lang_tag_id);
516 if ($lang_tag_cb.is(':checked')) {
517 //var lang_tag_field = "xxxx"+lang+"_"+tag+"_htrctoken";
518 var lang_tag_field = lang+"_"+tag+"_htrctoken";
519 fields.push(lang_tag_field+":"+q_text);
520 }
521 }
522 }
523 }
524
525 for (var li=0; li<langs_without_pos.length; li++) {
526 var lang = langs_without_pos[li];
527 var lang_enabled_id = lang + "-enabled";
528 var $lang_enabled_cb = $('#'+lang_enabled_id);
529
530 if ($lang_enabled_cb.is(':checked')) {
531 console.log("Adding in non-POS field for: " + lang);
532 //var lang_tag_field = "xxxx"+lang+"_htrctoken";
533 var lang_tag_field = lang+"_htrctoken";
534 fields.push(lang_tag_field+":"+q_text);
535 }
536 }
537
538 if (fields.length == 0) {
539 alert("No languages selected");
540 return;
541 }
542
543 var arg_q = fields.join(" OR ");
544
545
546 // Example search on one of the htrc-full-ef fields is:
547 // q=en_NOUN_htrctoken:farming
548
549 store_search_args = { q: arg_q, indent: arg_indent, wt: arg_wt, start: arg_start, rows: arg_rows };
550
551 if (group_by_vol_checked) {
552 store_search_args.sort="id asc";
553 }
554
555
556 $.ajax({
557 type: 'GET',
558 url: store_search_action,
559 data: store_search_args,
560 dataType: 'json',
561 success: show_results,
562 error: ajax_error
563 });
564
565}
566
567function generate_pos_langs()
568{
569 var pos_checkbox = [
570 { pos:"VERB", label:"Verbs", tooltip:"Verbs (all tenses and modes)" },
571 { pos:"NOUN", label:"Nouns", tooltip:"Nouns (common and proper)" },
572 { pos:"ADJ", label:"Adjectives", tooltip: null },
573 { pos:"ADV", label:"Adverbs", tooltip: null },
574 { pos:"ADP", label:"Adpositions", tooltip:"Adpositions (prepositions and postpositions)" },
575 { pos:"CONJ", label:"Conjunctions",tooltip: null },
576 { pos:"DET", label:"Determiners", tooltip: null },
577 { pos:"NUM", label:"Numbers", tooltip:"Cardinal numbers" },
578 { pos:"PRT", label:"Particles", tooltip:"Particles or other function words" },
579 { pos:"X", label:"Other", tooltip:"Other words, such as foreign words, typos, abbreviations"}
580 ];
581
582 var $pos_fieldsets = $('#pos-fieldsets');
583
584 for (var li=0; li<langs_with_pos.length; li++) {
585
586 var l = langs_with_pos[li];
587 var lang_full = isoLangs[l].name;
588 var lang_native_full = isoLangs[l].nativeName;
589 var opt_title = (lang_full !== lang_native_full) ? 'title="'+lang_native_full+'"' : "";
590
591 var opt_enabled = (l == "en") ? 'checked="checked"' : "";
592
593 var legend = "";
594 legend += ' <legend style="margin-bottom: 5px; padding-top: 15px;">\n';
595 legend += ' <input type="checkbox" name="'+l+'-enabled" id="'+l+'-enabled" ' + opt_enabled +'/>\n';
596 legend += ' <span ' + opt_title + '>'+lang_full+':</span>\n';
597 legend += ' </legend>\n';
598
599
600 var check_box_list = [];
601
602 for (var pi=0; pi<pos_checkbox.length; pi++) {
603 var pos_info = pos_checkbox[pi];
604 var pos = pos_info.pos;
605 var label = pos_info.label;
606 var tooltip = pos_info.tooltip;
607 var opt_tooltip = (tooltip != null) ? 'title="'+tooltip+'"' : "";
608
609 var check_box = "";
610 check_box += ' <input type="checkbox" name="'+l+'-'+pos+'-htrctoken-cb" id="'+l+'-'+pos+'-htrctoken-cb" checked="checked" />\n';
611 check_box += ' <label for="'+l+'-'+pos+'-htrctoken-cb" '+opt_tooltip+'>'+label+'</label>\n';
612
613 check_box_list.push(check_box);
614 }
615
616 var fieldset = "";
617 var opt_showhide_class = (li>0) ? 'class="show-hide-lang"' : "";
618
619 if (li==1) {
620 fieldset += '<button id="show-hide-lang">Show other languages ...</button>';
621 }
622
623 fieldset += '<fieldset ' + opt_showhide_class + '>\n';
624 fieldset += legend;
625 fieldset += ' <div id="'+l+'-pos-choice">\n';
626
627 var check_box_join = check_box_list.join('&nbsp;');
628 fieldset += check_box_join;
629
630 fieldset += ' </div>\n';
631 fieldset += '</fieldset>\n';
632
633 $pos_fieldsets.append(fieldset);
634 $('#'+l+'-enabled').click(lang_pos_toggle);
635
636 if (l == "en") {
637 $('#en-pos-choice *').prop('disabled',false);
638 }
639 else {
640 $('#'+l+'-pos-choice *').prop('disabled',true);
641 }
642 }
643
644
645 //$('#en-enabled').click(lang_pos_toggle);
646 //$('#de-enabled').click(lang_pos_toggle);
647 //$('#de-pos-choice *').prop('disabled',true);
648
649 show_hide_lang()
650}
651
652function show_hide_lang()
653{
654 $( "#show-hide-lang" ).click(function(event) {
655 event.preventDefault();
656 if($('.show-hide-lang:visible').length) {
657 $('.show-hide-lang').hide("slide", {direction: "up" } , 1000);
658 $('#show-hide-lang').html("Show other languages ...");
659 }
660 else {
661 $('.show-hide-lang').show("slide", {direction: "up" } , 1000);
662 $('#show-hide-lang').html("Hide other languages ...");
663 }
664 });
665}
666
667function generate_other_langs()
668{
669 // setup other languages
670 // for each 'langs_without_pos' generate HTML of the form:
671 // <input type="checkbox" name="fr-enabled" id="fr-enabled" />French
672 var $other_langs = $('#other-langs');
673
674 for (var i=0; i<langs_without_pos.length; i++) {
675 var lang = langs_without_pos[i];
676 //var labeled_checkbox = '<span style="white-space:nowrap;">\n';
677 var labeled_checkbox = '<nobr>';
678
679 labeled_checkbox += '<input type="checkbox" name="'+lang+'-enabled" id="'+lang+'-enabled" />';
680 /*
681 if (lang === "zh-cn") {
682 console.log("Mapping zh-cn => zh");
683 lang = "zh";
684 }
685 if (lang === "zh-tw") {
686 console.log("Mapping zh-tw => zh");
687 lang = "zh";
688 }
689*/
690 var lang_full = isoLangs[lang].name;
691 var lang_native_full = isoLangs[lang].nativeName;
692 var opt_title = (lang_full !== lang_native_full) ? 'title="'+lang_native_full+'"' : "";
693
694 labeled_checkbox += '<label for="'+lang+'-enabled" style="padding-left: 5px; padding-right: 10px;" ' + opt_title + '>'+lang_full+'</label>';
695 //labeled_checkbox += '</span>\n';
696 labeled_checkbox += '</nobr> ';
697
698 $other_langs.append(labeled_checkbox);
699
700 }
701}
702
703$(function() {
704 generate_pos_langs();
705
706 generate_other_langs();
707
708 if ($('#search-submit').length>0) {
709 $('#search-submit').click(submit_action);
710 }
711
712 if ($('#stream-search-submit').length>0) {
713 $('#stream-search-submit').click(stream_submit_action);
714 }
715
716});
Note: See TracBrowser for help on using the repository browser.