* A little better JS event handler code
* Re-add search box, now appearing on all pages svn: r10030
This commit is contained in:
parent
85a55f984e
commit
66cb57f46d
|
@ -186,17 +186,16 @@
|
|||
[onchange "delayed_search(this.value,event);"]
|
||||
[onkeyup "delayed_search(this.value,event);"]))})
|
||||
|
||||
(define (search-index-box index-url) ; appears on every page
|
||||
)
|
||||
|
||||
(define (search-index-box) ; appears on every page
|
||||
(let ([sa string-append])
|
||||
`(input
|
||||
([style ,(sa "font-size: 75%; margin: 0px; padding: 0px; border: 1px;"
|
||||
" background-color: #eee; color: #888;")]
|
||||
[type "text"]
|
||||
[value "...search..."]
|
||||
[onkeypress ,(sa "if (event && event.keyCode==13"
|
||||
" && this.value.indexOf(\"...search...\")<0) {"
|
||||
" location=\"doc-index.html?q=\"+escape(this.value);"
|
||||
" };")]
|
||||
[onkeypress ,(format "return DoSearchKey(event, this, ~s);" (version))]
|
||||
[onfocus ,(sa "this.style.color=\"black\";"
|
||||
" if (this.value.indexOf(\"...search...\")>=0)"
|
||||
" this.value=\"\";")]
|
||||
|
@ -204,8 +203,6 @@
|
|||
" this.style.color=\"#888\";"
|
||||
" this.value=\"...search...\"; }")]))))
|
||||
|
||||
)
|
||||
|
||||
;; ----------------------------------------
|
||||
;; main mixin
|
||||
|
||||
|
@ -611,9 +608,9 @@
|
|||
#; ; no need for these index-local searches
|
||||
,@(if (eq? d index)
|
||||
null
|
||||
`((small nbsp
|
||||
,(search-index-box (derive-filename index))))))
|
||||
null))
|
||||
`((small nbsp ,(search-index-box)))))
|
||||
null)
|
||||
,@(if up-path `(nbsp (small ,(search-index-box))) null))
|
||||
(div ([class "navright"])
|
||||
,@(render
|
||||
(make-element
|
||||
|
|
|
@ -44,14 +44,15 @@ function NormalizePath(path) {
|
|||
return path;
|
||||
}
|
||||
|
||||
function DoSearchKey(event, field) {
|
||||
function DoSearchKey(event, field, ver) {
|
||||
var val = field.value;
|
||||
if (event && event.keyCode == 13 && val.indexOf("...search...") < 0) {
|
||||
var u = GetCookie("PLT_Root");
|
||||
var u = GetCookie("PLT_Root."+ver);
|
||||
if (u == null) u = "../"; // default: go up
|
||||
u = u.replace(/[^\/\\]*$/, "") + "plt-search.html";
|
||||
location = u + "?q=" + escape(val);
|
||||
location = u + "search/index.html" + "?q=" + escape(val);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// `noscript' is problematic in some browsers (always renders as a
|
||||
|
|
|
@ -137,7 +137,7 @@
|
|||
@l];
|
||||
|
||||
// Globally visible bindings
|
||||
var search_handler, page_up_handler, page_dn_handler;
|
||||
var key_handler;
|
||||
|
||||
(function(){
|
||||
|
||||
|
@ -154,12 +154,12 @@
|
|||
+'<table width="100%">'
|
||||
+'<tr><td align="center" colspan="3">'
|
||||
+'<input type="text" id="search_box" style="width: 100%;"'
|
||||
+'onchange="search_handler(event);"'
|
||||
+'onkeypress="return search_handler(event);" />'
|
||||
+'onchange="key_handler(event);"'
|
||||
+'onkeypress="return key_handler(event);" />'
|
||||
+'</td></tr>'
|
||||
+'<tr><td align="left">'
|
||||
+'<a href="#" title="Previous Page"'
|
||||
+'onclick="page_up_handler(); return false;"'
|
||||
+'onclick="key_handler(\"PgUp\"); return false;"'
|
||||
+'><tt><b><<</b></tt></a>'
|
||||
+'</td><td align="center">'
|
||||
+'<span id="search_status" style="color: #601515; font-weight: bold;">'
|
||||
|
@ -167,7 +167,7 @@
|
|||
+'</span>'
|
||||
+'</td><td align="right">'
|
||||
+'<a href="#" title="Next Page"'
|
||||
+'onclick="page_dn_handler(); return false;"'
|
||||
+'onclick="key_handler(\"PgDn\"); return false;"'
|
||||
+'><tt><b>>></b></tt></a>'
|
||||
+'</td></tr>'
|
||||
+'<tr><td colspan="3">'
|
||||
|
@ -215,13 +215,15 @@
|
|||
}
|
||||
}
|
||||
|
||||
var last_search_terms;
|
||||
var last_search_term_raw, last_search_terms;
|
||||
var search_results, first_search_result;
|
||||
function DoSearch() {
|
||||
var terms =
|
||||
query.value.toLowerCase()
|
||||
.replace(/\s\s*/g," ") // single spaces
|
||||
.replace(/^\s/g,"").replace(/\s$/g,""); // trim edge spaces
|
||||
var terms = query.value;
|
||||
if (terms == last_search_term_raw) return;
|
||||
last_search_term_raw = terms;
|
||||
terms= terms.toLowerCase()
|
||||
.replace(/\s\s*/g," ") // single spaces
|
||||
.replace(/^\s/g,"").replace(/\s$/g,""); // trim edge spaces
|
||||
if (terms == last_search_terms) return;
|
||||
last_search_terms = terms;
|
||||
status.nodeValue = "Searching " + plt_search_data.length + " entries";
|
||||
|
@ -248,17 +250,6 @@
|
|||
UpdateResults();
|
||||
}
|
||||
|
||||
function PageDn() {
|
||||
if (first_search_result + results_num < search_results.length) {
|
||||
first_search_result += results_num;
|
||||
UpdateResults();
|
||||
}
|
||||
}
|
||||
function PageUp() {
|
||||
first_search_result -= results_num;
|
||||
UpdateResults();
|
||||
}
|
||||
|
||||
function UncompactUrl(url) {
|
||||
return url.replace(/^>/, plt_main_url);
|
||||
}
|
||||
|
@ -320,23 +311,34 @@
|
|||
}
|
||||
|
||||
var search_timer = null;
|
||||
function DelayedSearch(event) {
|
||||
function HandleKeyEvent(event) {
|
||||
if (search_timer != null) {
|
||||
var t = search_timer;
|
||||
search_timer = null;
|
||||
clearTimeout(t);
|
||||
}
|
||||
var key = event && event.keyCode;
|
||||
if (key == 13) { DoSearch()@";" return false@";" }
|
||||
else if (key == 33) { PageUp()@";" return false@";" }
|
||||
else if (key == 34) { PageDn()@";" return false@";" }
|
||||
else search_timer = setTimeout(DoSearch, 400);
|
||||
if (key == 13) {
|
||||
DoSearch();
|
||||
return false;
|
||||
} else if (key == 33) {
|
||||
DoSearch(); // in case we didn't update it yet
|
||||
first_search_result -= results_num;
|
||||
UpdateResults();
|
||||
return false;
|
||||
} else if (key == 34) {
|
||||
DoSearch(); // in case we didn't update it yet
|
||||
if (first_search_result + results_num < search_results.length) {
|
||||
first_search_result += results_num;
|
||||
UpdateResults();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
search_timer = setTimeout(DoSearch, 400);
|
||||
return true;
|
||||
}
|
||||
|
||||
search_handler = DelayedSearch;
|
||||
page_up_handler = PageUp;
|
||||
page_dn_handler = PageDn;
|
||||
key_handler = HandleKeyEvent;
|
||||
|
||||
window.onload = InitializeSearch;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user