@@ -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
@@ -41,28 +43,32 @@ class SearchbarComponent(engine: SearchbarEngine, inkuireEngine: InkuireDelegate
41
43
resultsDiv.appendChild(fragment)
42
44
def loadMoreResults (result : List [raw.HTMLElement ]): Unit = {
43
45
resultsDiv.onscroll = (event : Event ) => {
44
- if (resultsDiv.scrollHeight - resultsDiv.scrollTop == resultsDiv.clientHeight)
45
- {
46
- val fragment = document.createDocumentFragment()
47
- result.take(resultsChunkSize).foreach(fragment.appendChild)
48
- resultsDiv.appendChild(fragment)
49
- loadMoreResults(result.drop(resultsChunkSize))
50
- }
46
+ if (resultsDiv.scrollHeight - resultsDiv.scrollTop == resultsDiv.clientHeight) {
47
+ val fragment = document.createDocumentFragment()
48
+ result.take(resultsChunkSize).foreach(fragment.appendChild)
49
+ resultsDiv.appendChild(fragment)
50
+ loadMoreResults(result.drop(resultsChunkSize))
51
+ }
51
52
}
52
53
}
53
54
loadMoreResults(result.drop(resultsChunkSize))
54
55
56
+ var timeoutHandle : SetTimeoutHandle = null
55
57
def handleNewQuery (query : String ) =
56
- resultsDiv.scrollTop = 0
57
- while (resultsDiv.hasChildNodes()) resultsDiv.removeChild(resultsDiv.lastChild)
58
- val fragment = document.createDocumentFragment()
59
- parser.parse(query) match {
60
- case EngineMatchersQuery (matchers) =>
61
- handleNewFluffQuery(matchers)
62
- case BySignature (signature) =>
63
- inkuireEngine.query(query) { (p : PageEntry ) =>
64
- resultsDiv.appendChild(p.toHTML)
65
- }
58
+ clearTimeout(timeoutHandle)
59
+ timeoutHandle = setTimeout(1 .second) {
60
+ resultsDiv.scrollTop = 0
61
+ while (resultsDiv.hasChildNodes()) resultsDiv.removeChild(resultsDiv.lastChild)
62
+ val fragment = document.createDocumentFragment()
63
+ parser.parse(query) match {
64
+ case EngineMatchersQuery (matchers) =>
65
+ handleNewFluffQuery(matchers)
66
+ case BySignature (signature) =>
67
+ println(" Searching" )
68
+ inkuireEngine.query(query) { (p : PageEntry ) =>
69
+ resultsDiv.appendChild(p.toHTML)
70
+ }
71
+ }
66
72
}
67
73
68
74
private val searchIcon : html.Div =
0 commit comments