@@ -2,6 +2,8 @@ package dotty.tools.scaladoc
2
2
3
3
import org .scalajs .dom ._
4
4
import org .scalajs .dom .html .Input
5
+ import scala .scalajs .js .timers ._
6
+ import scala .concurrent .duration ._
5
7
6
8
class SearchbarComponent (engine : SearchbarEngine , inkuireEngine : InkuireDelegateSearchEngine , parser : QueryParser ):
7
9
val resultsChunkSize = 100
@@ -36,28 +38,32 @@ class SearchbarComponent(engine: SearchbarEngine, inkuireEngine: InkuireDelegate
36
38
resultsDiv.appendChild(fragment)
37
39
def loadMoreResults (result : List [raw.HTMLElement ]): Unit = {
38
40
resultsDiv.onscroll = (event : Event ) => {
39
- if (resultsDiv.scrollHeight - resultsDiv.scrollTop == resultsDiv.clientHeight)
40
- {
41
- val fragment = document.createDocumentFragment()
42
- result.take(resultsChunkSize).foreach(fragment.appendChild)
43
- resultsDiv.appendChild(fragment)
44
- loadMoreResults(result.drop(resultsChunkSize))
45
- }
41
+ if (resultsDiv.scrollHeight - resultsDiv.scrollTop == resultsDiv.clientHeight) {
42
+ val fragment = document.createDocumentFragment()
43
+ result.take(resultsChunkSize).foreach(fragment.appendChild)
44
+ resultsDiv.appendChild(fragment)
45
+ loadMoreResults(result.drop(resultsChunkSize))
46
+ }
46
47
}
47
48
}
48
49
loadMoreResults(result.drop(resultsChunkSize))
49
50
51
+ var timeoutHandle : SetTimeoutHandle = null
50
52
def handleNewQuery (query : String ) =
51
- resultsDiv.scrollTop = 0
52
- while (resultsDiv.hasChildNodes()) resultsDiv.removeChild(resultsDiv.lastChild)
53
- val fragment = document.createDocumentFragment()
54
- parser.parse(query) match {
55
- case EngineMatchersQuery (matchers) =>
56
- handleNewFluffQuery(matchers)
57
- case BySignature (signature) =>
58
- inkuireEngine.query(query) { (p : PageEntry ) =>
59
- resultsDiv.appendChild(p.toHTML)
60
- }
53
+ clearTimeout(timeoutHandle)
54
+ timeoutHandle = setTimeout(1 .second) {
55
+ resultsDiv.scrollTop = 0
56
+ while (resultsDiv.hasChildNodes()) resultsDiv.removeChild(resultsDiv.lastChild)
57
+ val fragment = document.createDocumentFragment()
58
+ parser.parse(query) match {
59
+ case EngineMatchersQuery (matchers) =>
60
+ handleNewFluffQuery(matchers)
61
+ case BySignature (signature) =>
62
+ println(" Searching" )
63
+ inkuireEngine.query(query) { (p : PageEntry ) =>
64
+ resultsDiv.appendChild(p.toHTML)
65
+ }
66
+ }
61
67
}
62
68
63
69
private val searchIcon : html.Div =
0 commit comments