diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-14 16:05:31 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-14 16:05:31 -0800 |
commit | 50595f9e1b05d33f47e540c24e33e50bd1625315 (patch) | |
tree | a3a982c44e6c24d8bd1278d4dc030d7b86f58b41 /examples | |
parent | 64b283eb61f2c20e39e4c55e8696522569420028 (diff) | |
download | hands-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") } |