diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2016-05-31 21:09:51 +0200 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2016-08-19 15:37:25 +0200 |
commit | 756861ed32207b5e1ab7964bcfdbe4165b68723e (patch) | |
tree | b260e6bbdbad5242450db2f67b147c691b5c7843 /dottydoc/js | |
parent | dccfb5bab0047b348b7b0168aec221e3f7939977 (diff) | |
download | dotty-756861ed32207b5e1ab7964bcfdbe4165b68723e.tar.gz dotty-756861ed32207b5e1ab7964bcfdbe4165b68723e.tar.bz2 dotty-756861ed32207b5e1ab7964bcfdbe4165b68723e.zip |
Add first steps to implementing search
Diffstat (limited to 'dottydoc/js')
-rw-r--r-- | dottydoc/js/src/DottyDoc.scala | 3 | ||||
-rw-r--r-- | dottydoc/js/src/Search.scala | 34 |
2 files changed, 37 insertions, 0 deletions
diff --git a/dottydoc/js/src/DottyDoc.scala b/dottydoc/js/src/DottyDoc.scala index 48989b66c..5773e6a19 100644 --- a/dottydoc/js/src/DottyDoc.scala +++ b/dottydoc/js/src/DottyDoc.scala @@ -16,6 +16,9 @@ import html.EntityLayout document.title = "Dotty " + EntityIndex.currentEntity.path.mkString(".") target.appendChild(EntityLayout(EntityIndex.currentEntity).html.render) hljs.initHighlightingOnLoad() + + val searchInput = document.getElementById("search").asInstanceOf[dom.html.Input] + searchInput.onkeyup = Search(searchInput) } } diff --git a/dottydoc/js/src/Search.scala b/dottydoc/js/src/Search.scala new file mode 100644 index 000000000..0683c5d95 --- /dev/null +++ b/dottydoc/js/src/Search.scala @@ -0,0 +1,34 @@ +package dotty.tools.dottydoc +package js + +import scala.scalajs.{ js => sjs } +import sjs.timers._ +import org.scalajs.dom + +object Search { + private var isSearching = false + + def apply(input: dom.html.Input) = considerSearch(input) + + def considerSearch(input: dom.html.Input): dom.Event => Unit = { e => + val query = input.value + if (query.length > 2) setTimeout(200) { + if (!isSearching) { + isSearching = true + performSearch(query) + } + } + } + + def performSearch(query: String): Unit = { + println(s"searching for $query...") + + val matchingPackages = EntityIndex.packages.values.collect { + case x if x.name.startsWith(query) => x + } + + println("Found matching packages: ") + matchingPackages.map(_.name).foreach(println) + isSearching = false + } +} |