Skip to content
This repository was archived by the owner on Apr 17, 2022. It is now read-only.

Commit a8337f1

Browse files
committed
Fix #22: area and line js.Function fixed
Selection#datum should accept array and use correct Update type Implicits added for js.Functions, so all d3 functions/traits extends js.FunctionN can be used as DatumFunction
1 parent 9aeea9d commit a8337f1

File tree

5 files changed

+34
-7
lines changed

5 files changed

+34
-7
lines changed

src/main/scala/org/singlespaced/d3js/Ops.scala

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,31 @@ object Ops {
3535
@inline implicit def fromFunction2To3IntPrimitive[Datum](value: (Datum, Int) => Int): js.Function3[Datum, Int, js.UndefOr[Int], Primitive] =
3636
asPrimitive(value)
3737

38+
@inline implicit def fromJsFunction1To3StringPrimitive[Datum](value: js.Function1[Datum,String]): js.Function3[Datum, Int, js.UndefOr[Int], Primitive] =
39+
asPrimitive(value)
40+
41+
@inline implicit def fromJsFunction1To3DoublePrimitive[Datum](value: js.Function1[Datum,Double]): js.Function3[Datum, Int, js.UndefOr[Int], Primitive] =
42+
asPrimitive(value)
43+
44+
@inline implicit def fromJsFunction1To3IntPrimitive[Datum](value: js.Function1[Datum,Int]): js.Function3[Datum, Int, js.UndefOr[Int], Primitive] =
45+
asPrimitive(value)
46+
47+
@inline implicit def fromJsFunction1To3BooleanPrimitive[Datum](value: js.Function1[Datum,Boolean]): js.Function3[Datum, Int, js.UndefOr[Int], Primitive] =
48+
asPrimitive(value)
49+
50+
@inline implicit def fromJsFunction2To3StringPrimitive[Datum](value: js.Function2[Datum, Int,String]): js.Function3[Datum, Int, js.UndefOr[Int], Primitive] =
51+
asPrimitive(value)
52+
53+
@inline implicit def fromJsFunction2To3DoublePrimitive[Datum](value: js.Function2[Datum, Int, Double]): js.Function3[Datum, Int, js.UndefOr[Int], Primitive] =
54+
asPrimitive(value)
55+
56+
@inline implicit def fromJsFunction2To3BooleanPrimitive[Datum](value: js.Function2[Datum, Int, Boolean]): js.Function3[Datum, Int, js.UndefOr[Int], Primitive] =
57+
asPrimitive(value)
58+
59+
@inline implicit def fromJsFunction2To3IntPrimitive[Datum](value: js.Function2[Datum, Int, Int]): js.Function3[Datum, Int, js.UndefOr[Int], Primitive] =
60+
asPrimitive(value)
61+
62+
3863
@inline implicit def asPrimitive[Datum, T](value: Datum => T) =
3964
fromFunction1To3(value.andThen(_.asInstanceOf[Primitive]))
4065

src/main/scala/org/singlespaced/d3js/selection.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ trait BaseSelection[Datum, T <: BaseSelection[Datum,T]] extends BaseDom[Datum,T]
8080

8181
def datum(): Datum = js.native
8282
def datum[NewDatum](value: NewDatum): Update[NewDatum] = js.native
83+
def datum[NewDatum](value: js.Array[NewDatum]): Update[NewDatum] = js.native
8384
def datum[NewDatum](value: DatumFunction[NewDatum]): Update[NewDatum] = js.native
8485

8586
def sort(comparator: js.Function2[Datum, Datum, Double] = ???): T = js.native

src/main/scala/org/singlespaced/d3js/svg.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ trait SvgObject extends js.Object {
4141
package svg {
4242

4343
@js.native
44-
trait Line[T] extends js.Function1[js.Array[T],String] {
44+
trait Line[T] extends js.Function1[T,String] {
4545

4646
def apply[T]():Line[T] = js.native
4747

@@ -187,7 +187,7 @@ trait Brush[T] extends js.Function1[Selection[T] | Transition[T], Unit] {
187187

188188

189189
@js.native
190-
trait Area[T] extends js.Function1[js.Array[T],String] {
190+
trait Area[T] extends js.Function1[T,String] {
191191

192192
def apply[T]():Area[T] = js.native
193193

src/test/scala/org/singlespaced/d3js/SvgAreaTest.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,19 @@ object SvgAreaTest extends TestSuite {
2525
.x((d:TestDatum,i:Int) => d.v.toDouble )
2626
.y((d:TestDatum,i:Int) => d.v.toDouble )
2727
//assert
28-
d3.select(elem).data(data)
28+
29+
d3.select(elem).datum(data)
2930
.append("path")
30-
.attr("d", result(data))
31+
.attr("d", result)
3132

3233
val actual=dom.document.getElementsByTagName("path")
3334
assert( actual.length == 1)
3435
assert( actual.item(0).asInstanceOf[dom.Element].getAttribute("d") =="M1,1L4,4L4,4L1,1Z")
36+
3537
}
3638
'd3_area_radial {
3739
val area = d3.svg.area.radial().interpolate("basis").tension(0).radius(100)
3840
}
39-
4041
}
4142
}
4243

src/test/scala/org/singlespaced/d3js/SvgLineTest.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ object SvgLineTest extends TestSuite {
2626
.x((d:TestDatum,i:Int) => d.v.toDouble )
2727
.y((d:TestDatum,i:Int) => d.v.toDouble )
2828
//assert
29-
d3.select(elem).data(data)
29+
d3.select(elem).datum(data)
3030
.append("path")
31-
.attr("d", result(data))
31+
.attr("d", result)
3232

3333
val actual=dom.document.getElementsByTagName("path")
3434
assert( actual.length == 1)

0 commit comments

Comments
 (0)