Skip to content

Instantly share code, notes, and snippets.

View benjaminjackman's full-sized avatar

Ben Jackman benjaminjackman

View GitHub Profile
//This is my general purpose client for the Javascript side
class AutowireClientAjax(val url: String)(implicit val ec: ExecutionContext = JSExecutionContext.queue)
extends SerAutowireClient {
override def doCall(req: Request): Future[Any] = {
val r = AutowireHelp.ClientSideReq.fromAutowire(req)
Ajax.post(
url = url,
data = r.toJsonCompact()
).map(_.responseText)
@benjaminjackman
benjaminjackman / GlobalView.scala
Created October 20, 2014 14:43
ScalaJs React Examples
class GlobalView(implicit val pc: PoeCacher) extends View {
override def start(jq: JQuery): Unit = {
val el = jq.get(0).asInstanceOf[dom.Element]
val root = GlobalViewWidget()(pc)
React.renderComponent(root, el)
}
override def stop(): Unit = {
}
}
import sbt._
import Keys._
import scala.scalajs.sbtplugin.env.nodejs.NodeJSEnv
import scala.scalajs.sbtplugin.ScalaJSPlugin._
import scala.scalajs.sbtplugin.ScalaJSPlugin.ScalaJSKeys._
object Build extends sbt.Build{
def forCaseClass[A <: Product : c.WeakTypeTag](c: Context): c.Expr[SerClass[A]] = {
import c.universe._
val tpe = weakTypeOf[A]
val sym = tpe.typeSymbol.asClass
val tpeStr = tpe.toString
if (!sym.isCaseClass) {
c.error(c.enclosingPosition, "Cannot create SerClass for non-case class")
return c.Expr[SerClass[A]](q"null")
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<title>ScalaJs + Play + three.js css3d - periodic table</title>
<link rel="stylesheet" href="@routes.Assets.at("stylesheets/periodic-table.css")">
</head>
<body>
@libs.tweenJs()
@benjaminjackman
benjaminjackman / D3.scala
Created July 11, 2014 18:52
d3 facade for scalajs
package cgta.viz
package facades.d3
import scala.scalajs.js
import js.annotation._
import scala.scalajs.js.Date
import org.scalajs.dom.XMLHttpRequest
import org.scalajs.dom.Document
import org.scalajs.dom.DocumentFragment
import org.scalajs.dom.Element
@benjaminjackman
benjaminjackman / gist:e9832bb44c5a59026f69
Created June 10, 2014 18:11
Example of using three js in scala
package cgta.viz
package learn.threejs
import scala.scalajs.js
import scala.scalajs.js.annotation.JSExport
import cgta.oscala.wraps.tween.{Tween, TWEENJS}
import org.scalajs.dom
@JSExport
bjackman@CGTA-DEV-4 ~/dev/github Thu May 29 18:12:50$
git clone https://github.com/scala-js/scala-js.git
Cloning into 'scala-js'...
remote: Reusing existing pack: 15860, done.
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 15864 (delta 1), reused 0 (delta 0)
Receiving objects: 100% (15864/15864), 3.47 MiB | 3.29 MiB/s, done.
Resolving deltas: 100% (4943/4943), done.
bjackman@CGTA-DEV-4 ~/dev/github Thu May 29 18:14:11$
@benjaminjackman
benjaminjackman / ScalaJSWrapIdeal.scala
Created May 14, 2014 05:43
ScalaJS Idealized Type Wrappers for React Experimentation
package cgta.viz.learn.react
import scala.scalajs.js.annotation.JSExport
import scala.scalajs.js
import org.scalajs.dom.HTMLElement
@JSExport
object ReactTodo {
//Some helpers I use.
import BenSjs._
import scala.scalajs.js
object UTF8Impl {
private val global = js.Dynamic.global
def toBytes(s: String): Array[Byte] = {
val out = new js.Array[js.Number]()
var n = 0
val str: js.String = s