| @@ -82,7 +82,7 @@ var searchResultsPage = 1; | |||
| var hotkeyActions = { | |||
| "k" : previousResult, | |||
| "j" : nextResult | |||
| "j" : nextResult, | |||
| "h" : previousSymbolMatch, | |||
| "l" : nextSymbolMatch | |||
| }; | |||
| @@ -258,10 +258,6 @@ function createResult(codelet) { | |||
| // Needs to be processed on the server | |||
| 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 | |||
| $(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) { | |||
| e.stopPropagation() | |||
| e.preventDefault() | |||
| cur_match = cur_match >= matches.length - 1 ? 0 : cur_match + 1; | |||
| newMatch(); | |||
| e.stopPropagation(); | |||
| e.preventDefault(); | |||
| }); | |||
| $(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 | |||
| @@ -323,6 +305,54 @@ function createResult(codelet) { | |||
| 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. | |||
| * | |||