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

Commit 2d6b07c

Browse files
committed
Fix #9: selection.data key with simple function
- allow use of a simple function with function only for origin type Datum
1 parent 90489f8 commit 2d6b07c

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,10 @@ trait BaseSelection[Datum, T <: BaseSelection[Datum,T]] extends BaseDom[Datum,T]
6969
def data(): js.Array[Datum] = js.native
7070
def data[NewDatum](data: js.Array[NewDatum]): Update[NewDatum] = js.native
7171
def data[NewDatum](data: js.Array[NewDatum], key: js.ThisFunction2[Datum|NewDatum,js.UndefOr[NewDatum], Int, String]): Update[NewDatum] = js.native
72+
def data[NewDatum <: Datum](data: js.Array[NewDatum], key: js.Function2[Datum, Int, String]): Update[NewDatum] = js.native
7273
def data[NewDatum](data: DatumFunction[js.Array[NewDatum]], key: js.ThisFunction2[Datum|NewDatum,js.UndefOr[NewDatum], Int, String]): Update[NewDatum] = js.native
7374

75+
7476
def filter(selector: DatumFunction[Boolean]): T = js.native
7577

7678
def datum(): Datum = js.native

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ package org.singlespaced.d3js
33
import org.scalajs.dom
44
import utest._
55
import scala.scalajs.js
6-
import scala.scalajs.js.{ThisFunction, |}
6+
import scala.scalajs.js.`|`
7+
import org.singlespaced.d3js.Ops._
78
object SelectionTest extends TestSuite {
89

910

@@ -30,6 +31,16 @@ object SelectionTest extends TestSuite {
3031
}
3132
sel.data[Int](js.Array(5),function).enter().append("p")
3233
}
34+
'd3_dataWithKey_simpleFunction {
35+
//arrange
36+
class MyData(val id:String)
37+
class MySubData(id:String) extends MyData(id)
38+
val sel=d3.selectAll("p").data(js.Array(new MyData("1")))
39+
val function= (d:MyData) => d.id
40+
//act
41+
sel.data[MySubData](js.Array(new MySubData("2")),function).enter().append("p")
42+
//assert
43+
}
3344

3445

3546
}

0 commit comments

Comments
 (0)