aboutsummaryrefslogtreecommitdiff
path: root/dottydoc/js
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-05-31 21:09:51 +0200
committerFelix Mulder <felix.mulder@gmail.com>2016-08-19 15:37:25 +0200
commit756861ed32207b5e1ab7964bcfdbe4165b68723e (patch)
treeb260e6bbdbad5242450db2f67b147c691b5c7843 /dottydoc/js
parentdccfb5bab0047b348b7b0168aec221e3f7939977 (diff)
downloaddotty-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.scala3
-rw-r--r--dottydoc/js/src/Search.scala34
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
+ }
+}