| @@ -82,7 +82,7 @@ var searchResultsPage = 1; | |||||
| var hotkeyActions = { | var hotkeyActions = { | ||||
| "k" : previousResult, | "k" : previousResult, | ||||
| "j" : nextResult | |||||
| "j" : nextResult, | |||||
| "h" : previousSymbolMatch, | "h" : previousSymbolMatch, | ||||
| "l" : nextSymbolMatch | "l" : nextSymbolMatch | ||||
| }; | }; | ||||
| @@ -258,10 +258,6 @@ function createResult(codelet) { | |||||
| // Needs to be processed on the server | // Needs to be processed on the server | ||||
| codeElt.innerHTML = '<div id=tablecontainer>' + codelet.html_code + '</div>'; | codeElt.innerHTML = '<div id=tablecontainer>' + codelet.html_code + '</div>'; | ||||
| var matches = codeElt.querySelectorAll('.hll'); | |||||
| $.each(matches, function(i, a) { | |||||
| a.id = 'match_' + i; | |||||
| }); | |||||
| //Event binding | //Event binding | ||||
| $(codeElt).hover(function(e) { | $(codeElt).hover(function(e) { | ||||
| @@ -274,28 +270,14 @@ function createResult(codelet) { | |||||
| }); | }); | ||||
| }); | }); | ||||
| var cur_match = -1; | |||||
| var newMatch = function(e) { | |||||
| var $code = $(newDiv).find('#tablecontainer'), | |||||
| $match = $code.find('#match_' + cur_match); | |||||
| $code.scrollTop($code.scrollTop() - $code.height() / 2 + | |||||
| $match.position().top + $match.height() / 2); | |||||
| $match.effect("highlight", {}, 750) | |||||
| } | |||||
| $(nextMatch).click(function(e) { | $(nextMatch).click(function(e) { | ||||
| e.stopPropagation() | |||||
| e.preventDefault() | |||||
| cur_match = cur_match >= matches.length - 1 ? 0 : cur_match + 1; | |||||
| newMatch(); | |||||
| e.stopPropagation(); | |||||
| e.preventDefault(); | |||||
| }); | }); | ||||
| $(prevMatch).click(function(e) { | $(prevMatch).click(function(e) { | ||||
| e.stopPropagation() | |||||
| cur_match = cur_match <= 0 ? matches.length - 1 : cur_match - 1; | |||||
| newMatch(); | |||||
| e.stopPropagation(); | |||||
| e.preventDefault(); | |||||
| }); | }); | ||||
| //Finish and append elements to parent elements | //Finish and append elements to parent elements | ||||
| @@ -323,6 +305,54 @@ function createResult(codelet) { | |||||
| return newDiv; | return newDiv; | ||||
| } | } | ||||
| function previousSymbolMatch() { | |||||
| var currResult = $(".display-all"), | |||||
| currMatch = currResult.find(".hll.current"), | |||||
| matches = currResult.find(".hll"), | |||||
| scrollDiv = currResult.find('#tablecontainer'); | |||||
| if (currMatch.length == 0) { | |||||
| currMatch = matches[0]; | |||||
| $(currMatch).addClass('current'); | |||||
| } | |||||
| currMatch.removeClass('current'); | |||||
| var index = matches.index(currMatch.get(0)) - 1; | |||||
| index = index <= 0 ? matches.length - 1 : index; | |||||
| var newMatch = $(matches[index]); | |||||
| scrollDiv.scrollTop(scrollDiv.scrollTop() | |||||
| - scrollDiv.height() / 2 | |||||
| + newMatch.position().top + newMatch.height() / 2); | |||||
| newMatch.effect("highlight", {}, 750) | |||||
| newMatch.addClass('current'); | |||||
| }; | |||||
| function nextSymbolMatch() { | |||||
| var currResult = $(".display-all"), | |||||
| currMatch = currResult.find(".hll.current"), | |||||
| matches = currResult.find(".hll"), | |||||
| scrollDiv = currResult.find('#tablecontainer'); | |||||
| if (currMatch.length == 0) { | |||||
| currMatch = $(matches[0]); | |||||
| $(currMatch).addClass('current'); | |||||
| } | |||||
| currMatch.removeClass('current'); | |||||
| var index = matches.index(currMatch.get(0)) + 1; | |||||
| index = index >= matches.length ? 0 : index; | |||||
| var newMatch = $(matches[index]); | |||||
| scrollDiv.scrollTop(scrollDiv.scrollTop() | |||||
| - scrollDiv.height() / 2 | |||||
| + newMatch.position().top + newMatch.height() / 2); | |||||
| newMatch.effect("highlight", {}, 750); | |||||
| newMatch.addClass('current'); | |||||
| }; | |||||
| /* | /* | ||||
| * AJAX the current query string to the server, and return its response. | * AJAX the current query string to the server, and return its response. | ||||
| * | * | ||||