summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorLi Haoyi <haoyi@dropbox.com>2014-11-14 16:05:31 -0800
committerLi Haoyi <haoyi@dropbox.com>2014-11-14 16:05:31 -0800
commit50595f9e1b05d33f47e540c24e33e50bd1625315 (patch)
treea3a982c44e6c24d8bd1278d4dc030d7b86f58b41 /examples
parent64b283eb61f2c20e39e4c55e8696522569420028 (diff)
downloadhands-on-scala-js-50595f9e1b05d33f47e540c24e33e50bd1625315.tar.gz
hands-on-scala-js-50595f9e1b05d33f47e540c24e33e50bd1625315.tar.bz2
hands-on-scala-js-50595f9e1b05d33f47e540c24e33e50bd1625315.zip
Moved some stuff around
Diffstat (limited to 'examples')
-rw-r--r--examples/demos/src/main/scala/scrollmenu/Controller.scala (renamed from examples/demos/Controller.scala)15
-rw-r--r--examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala (renamed from examples/demos/ScrollMenu.scala)13
2 files changed, 13 insertions, 15 deletions
diff --git a/examples/demos/Controller.scala b/examples/demos/src/main/scala/scrollmenu/Controller.scala
index 6fd7ac7..1fcb68c 100644
--- a/examples/demos/Controller.scala
+++ b/examples/demos/src/main/scala/scrollmenu/Controller.scala
@@ -1,9 +1,10 @@
-import acyclic.file
-import scala.scalajs.js
-import scala.scalajs.js.annotation.JSExport
+package scrollmenu
+
import org.scalajs.dom
import org.scalajs.dom.extensions._
-import scala.collection.mutable
+
+import scala.scalajs.js
+import scala.scalajs.js.annotation.JSExport
import scalatags.JsDom.all._
@@ -66,12 +67,10 @@ object Controller{
.map(offset(_, main))
.toVector
}
- println(headers)
-
-
val domTrees = structure.children.map(recurse(_, 0))
val scrollSpy = new ScrollSpy(headers, domTrees)
+
menu.appendChild(
div(cls:="pure-menu pure-menu-open")(
a(cls:="pure-menu-heading", href:="#")(
@@ -82,13 +81,13 @@ object Controller{
)
).render
)
+
menuLink.onclick = (e: dom.MouseEvent) => {
layout.classList.toggle("active")
menu.classList.toggle("active")
menuLink.classList.toggle("active")
}
-
main.onscroll = (e: dom.UIEvent) => {
scrollSpy(main.scrollTop + main.clientHeight)
}
diff --git a/examples/demos/ScrollMenu.scala b/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala
index ccab4e9..9c0fbd2 100644
--- a/examples/demos/ScrollMenu.scala
+++ b/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala
@@ -1,4 +1,5 @@
-import acyclic.file
+package scrollmenu
+
import org.scalajs.dom
case class Tree[T](value: T, children: Vector[Tree[T]])
@@ -6,11 +7,11 @@ case class Tree[T](value: T, children: Vector[Tree[T]])
case class MenuNode(frag: dom.HTMLElement, start: Int, end: Int)
/**
- * High performance scrollspy to
+ * High performance scrollspy to work keep the left menu bar in sync.
+ * Lots of sketchy imperative code in order to maximize performance.
*/
class ScrollSpy(headers: Vector[Double], domTrees: Seq[Tree[MenuNode]]){
var scrolling = false
- var lastSelected: dom.HTMLElement = null
def apply(threshold: Double) = if (!scrolling){
scrolling = true
dom.requestAnimationFrame((d: Double) => start(threshold))
@@ -34,12 +35,10 @@ class ScrollSpy(headers: Vector[Double], domTrees: Seq[Tree[MenuNode]]){
}
if (!winFound) {
tree.children.foreach(_.value.frag.classList.remove("selected"))
- if (lastSelected != null)
- lastSelected.children(0).classList.remove("pure-menu-selected")
- menuItem.children(0).classList.add("pure-menu-selected")
- lastSelected = menuItem
}
+ menuItem.children(0).classList.add("pure-menu-selected")
}else{
+ menuItem.children(0).classList.remove("pure-menu-selected")
menuItem.classList.add("hide")
menuItem.classList.remove("selected")
}