diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-26 03:31:52 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-26 03:31:52 -0800 |
commit | 0ae3b5b47a7e1a3a8ae31817bc7b10ca9c054f54 (patch) | |
tree | 8f05bf9c9be4640ec4ea005538f2340cae5ee3fc /examples | |
parent | ca124817c53d50dc81c7817d37f3c5fc08e0c565 (diff) | |
download | hands-on-scala-js-0ae3b5b47a7e1a3a8ae31817bc7b10ca9c054f54.tar.gz hands-on-scala-js-0ae3b5b47a7e1a3a8ae31817bc7b10ca9c054f54.tar.bz2 hands-on-scala-js-0ae3b5b47a7e1a3a8ae31817bc7b10ca9c054f54.zip |
fix all the problems
Diffstat (limited to 'examples')
3 files changed, 59 insertions, 56 deletions
diff --git a/examples/demos/src/main/scala/advanced/Async.scala b/examples/demos/src/main/scala/advanced/Async.scala index 481e80e..c4d7366 100644 --- a/examples/demos/src/main/scala/advanced/Async.scala +++ b/examples/demos/src/main/scala/advanced/Async.scala @@ -29,11 +29,11 @@ object Async { type ME = dom.MouseEvent val mousemove = - Channel[ME](canvas.onmousemove = _) + new Channel[ME](canvas.onmousemove = _) val mouseup = - Channel[ME](canvas.onmouseup = _) + new Channel[ME](canvas.onmouseup = _) val mousedown = - Channel[ME](canvas.onmousedown = _) + new Channel[ME](canvas.onmousedown = _) async{ while(true){ @@ -99,7 +99,7 @@ object Async { } } -case class Channel[T](init: (T => Unit) => Unit){ +class Channel[T](init: (T => Unit) => Unit){ init(update) private[this] var value: Promise[T] = null def apply(): Future[T] = { diff --git a/examples/demos/src/main/scala/scrollmenu/Controller.scala b/examples/demos/src/main/scala/scrollmenu/Controller.scala index 4480445..7fd8c90 100644 --- a/examples/demos/src/main/scala/scrollmenu/Controller.scala +++ b/examples/demos/src/main/scala/scrollmenu/Controller.scala @@ -28,53 +28,52 @@ object Controller{ val snippets = dom.document.getElementsByClassName("highlight-me") snippets.foreach(js.Dynamic.global.hljs.highlightBlock(_)) - def rest() = { - val scrollSpy = new ScrollSpy(structure, main) - val list = ul(cls := "menu-item-list collapsed")( - scrollSpy.domTrees.map(_.value.frag) + + val scrollSpy = new ScrollSpy(structure, main) + val list = ul(cls := "menu-item-list collapsed")( + scrollSpy.domTrees.map(_.value.frag) + ).render + + def updateScroll() = scrollSpy() + val expandIcon = i(cls := "fa fa-caret-down").render + val expandLink = + a( + expandIcon, + href := "javascript:", + marginLeft := "0px", + paddingLeft := "15px", + paddingRight := "15px", + position.absolute, + top := "0px", + right := "0px", + cls := "pure-menu-selected", + onclick := { (e: dom.Event) => + expandIcon.classList.toggle("fa-caret-down") + expandIcon.classList.toggle("fa-caret-up") + list.classList.toggle("collapsed") + scrollSpy.clean = !scrollSpy.clean + updateScroll() + } + ).render + + + menu.appendChild( + div(cls := "pure-menu pure-menu-open")( + a(cls := "pure-menu-heading")( + "Contents", expandLink + ), + list ).render + ) - def updateScroll() = scrollSpy() - val expandIcon = i(cls := "fa fa-caret-down").render - val expandLink = - a( - expandIcon, - href := "javascript:", - marginLeft := "0px", - paddingLeft := "15px", - paddingRight := "15px", - position.absolute, - top := "0px", - right := "0px", - cls := "pure-menu-selected", - onclick := { (e: dom.Event) => - expandIcon.classList.toggle("fa-caret-down") - expandIcon.classList.toggle("fa-caret-up") - list.classList.toggle("collapsed") - scrollSpy.clean = !scrollSpy.clean - updateScroll() - } - ).render - - - menu.appendChild( - div(cls := "pure-menu pure-menu-open")( - a(cls := "pure-menu-heading")( - "Contents", expandLink - ), - list - ).render - ) - - menuLink.onclick = (e: dom.MouseEvent) => { - layout.classList.toggle("active") - menu.classList.toggle("active") - menuLink.classList.toggle("active") - } - - main.onscroll = (e: dom.UIEvent) => updateScroll() - updateScroll() + menuLink.onclick = (e: dom.MouseEvent) => { + layout.classList.toggle("active") + menu.classList.toggle("active") + menuLink.classList.toggle("active") } - dom.setTimeout(rest _, 10) + + main.onscroll = (e: dom.UIEvent) => updateScroll() + updateScroll() + } } diff --git a/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala b/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala index 9ce9a2b..7d718e2 100644 --- a/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala +++ b/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala @@ -61,13 +61,15 @@ class ScrollSpy(structure: Tree[String], } - private[this] var scrolling = -1 + private[this] var scrolling = false def apply() = { - dom.clearTimeout(scrolling) - scrolling = dom.setTimeout(() => start(), 200) + if (!scrolling) { + scrolling = true + dom.requestAnimationFrame((d: Double) => start()) + } } private[this] def start() = { -// scrolling = false + scrolling = false def scroll(el: dom.Element) = { val rect = el.getBoundingClientRect() if (rect.top <= 0) @@ -96,10 +98,12 @@ class ScrollSpy(structure: Tree[String], // This means it's the leaf element, because it won but there // aren't any children which won, so it must be the actual leaf tree.children.foreach(_.value.frag.classList.remove("selected")) - if (dom.location.hash != itemId) - dom.history.pushState(null, null, "#"+itemId) - scroll(menuItem.children(0)) + val top = main.scrollTop + dom.location.hash = itemId + main.scrollTop = top + + scroll(menuItem.children(0)) } menuItem.children(0).classList.add("pure-menu-selected") }else{ |