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

Commit 41718db

Browse files
committed
Fix #21: svg.line svg.area radial, angel and radius functions added
1 parent 1cd59d1 commit 41718db

File tree

3 files changed

+72
-5
lines changed

3 files changed

+72
-5
lines changed

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

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ trait SvgObject extends js.Object {
99

1010
import svg._
1111

12-
def line[T](): Line[T] = js.native
12+
val line: Line[Any] = js.native
1313

14-
def area[T](): Area[T] = js.native
14+
val area: Area[Any] = js.native
1515

1616
def arc[T](): Arc[T] = js.native
1717

@@ -43,6 +43,8 @@ package svg {
4343
@js.native
4444
trait Line[T] extends js.Function1[js.Array[T],String] {
4545

46+
def apply[T]():Line[T] = js.native
47+
4648
def x(): Double | js.Function2[T, Int, Double] = js.native
4749

4850
def x(x: Double): Line[T] = js.native
@@ -66,6 +68,21 @@ trait Line[T] extends js.Function1[js.Array[T],String] {
6668
def defined(): js.Function2[T, Double, Boolean] = js.native
6769

6870
def defined(defined: js.Function2[T, Int, Boolean]): Line[T] = js.native
71+
72+
def radial(): Line[T] = js.native
73+
74+
def radius(): js.Function2[T, Double, Double] = js.native
75+
76+
def radius(radius: Double): Line[T] = js.native
77+
78+
def radius(radius: js.Function2[T, Double, Double]): Line[T] = js.native
79+
80+
def angle(): js.Function2[T, Double, Double] = js.native
81+
82+
def angle(angle: Double): Line[T] = js.native
83+
84+
def angle(angle: js.Function2[T, Double, Double]): Line[T] = js.native
85+
6986
}
7087

7188
@js.native
@@ -172,6 +189,8 @@ trait Brush[T] extends js.Function1[Selection[T] | Transition[T], Unit] {
172189
@js.native
173190
trait Area[T] extends js.Function1[js.Array[T],String] {
174191

192+
def apply[T]():Area[T] = js.native
193+
175194
def x(): Double | js.Function2[T, Int, Double] = js.native
176195

177196
def x(x: Double): Area[T] = js.native
@@ -208,6 +227,8 @@ trait Area[T] extends js.Function1[js.Array[T],String] {
208227

209228
def y1(y1: js.Function2[T, Int, Double]): Area[T] = js.native
210229

230+
def radial(): Line[T] = js.native
231+
211232
def interpolate(): String | js.Function1[js.Array[js.Tuple2[Double, Double]], String] = js.native
212233

213234
def interpolate(interpolate: String | js.Function1[js.Array[js.Tuple2[Double, Double]], String]): Area[T] = js.native
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package org.singlespaced.d3js
2+
3+
import org.scalajs.dom
4+
import org.singlespaced.d3js.Ops._
5+
import utest._
6+
7+
import scala.scalajs.js
8+
9+
10+
object SvgAreaTest extends TestSuite {
11+
12+
13+
val elem=dom.document.createElement("svg")
14+
dom.document.body.appendChild(elem)
15+
16+
17+
val tests = TestSuite {
18+
'd3_area_xy {
19+
//arrange
20+
case class TestDatum(v:Int)
21+
val data=js.Array[TestDatum](TestDatum(1),TestDatum(4))
22+
val testee = d3.svg.area[TestDatum]()
23+
//act
24+
val result=testee
25+
.x((d:TestDatum,i:Int) => d.v.toDouble )
26+
.y((d:TestDatum,i:Int) => d.v.toDouble )
27+
//assert
28+
d3.select(elem).data(data)
29+
.append("path")
30+
.attr("d", result(data))
31+
32+
val actual=dom.document.getElementsByTagName("path")
33+
assert( actual.length == 1)
34+
assert( actual.item(0).asInstanceOf[dom.Element].getAttribute("d") =="M1,1L4,4L4,4L1,1Z")
35+
}
36+
'd3_area_radial {
37+
val area = d3.svg.area.radial().interpolate("basis").tension(0).radius(100)
38+
}
39+
40+
}
41+
}
42+

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import utest._
66
import scala.scalajs.js
77
import org.singlespaced.d3js.Ops._
88

9+
10+
911
object SvgLineTest extends TestSuite {
1012

1113

@@ -18,7 +20,7 @@ object SvgLineTest extends TestSuite {
1820
//arrange
1921
case class TestDatum(v:Int)
2022
val data=js.Array[TestDatum](TestDatum(1),TestDatum(4))
21-
val testee = d3.svg.line[TestDatum]
23+
val testee = d3.svg.line[TestDatum]()
2224
//act
2325
val result=testee
2426
.x((d:TestDatum,i:Int) => d.v.toDouble )
@@ -36,13 +38,15 @@ object SvgLineTest extends TestSuite {
3638
//arrange
3739
case class TestDatum(v:Int)
3840
val data=js.Array[TestDatum](TestDatum(1),TestDatum(4))
39-
val testee = d3.svg.line[TestDatum]
41+
val testee = d3.svg.line[TestDatum]()
4042
//act
4143
val result=testee
4244
.x((d:TestDatum) => d.v.toDouble )
4345
.y((d:TestDatum) => d.v.toDouble )
4446
}
45-
47+
'd3_line_radial_issue_21 {
48+
val line = d3.svg.line.radial().interpolate("basis").tension(0).radius(100)
49+
}
4650

4751
}
4852
}

0 commit comments

Comments
 (0)