├── .gitignore
├── .travis.yml
├── README.md
├── build.sbt
├── d3.scala.diff
├── index-fastopt.html
├── index.html
├── miserables.json
├── population.csv
├── project
├── build.properties
└── build.sbt
├── src
├── main
│ └── scala
│ │ ├── D3
│ │ └── d3.scala
│ │ └── example
│ │ ├── Graph2.scala
│ │ └── ScalaJSExample.scala
└── test
│ └── scala
│ └── example
│ └── ScalaJSExampleTest.scala
├── testsuite-fastopt.html
└── testsuite.html
/.gitignore:
--------------------------------------------------------------------------------
1 | target/
2 | .cache
3 | .classpath
4 | .project
5 | .settings/
6 | .idea/
7 | .idea_modules/
8 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: scala
2 | script:
3 | - sbt ++$TRAVIS_SCALA_VERSION test packageJS fullOptJS
4 | scala:
5 | - 2.11.1
6 | jdk:
7 | - oraclejdk7
8 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Example of Scala.js to D3.js binding
2 |
3 | [](https://travis-ci.org/nebuta/ScalaJS-D3-Example)
4 |
5 |
6 | This repo is a demonstration of Scala.js
7 | [Scala.js](https://www.scala-js.org/) binding to D3.js (http://d3js.org/).
8 |
--------------------------------------------------------------------------------
/build.sbt:
--------------------------------------------------------------------------------
1 | // Turn this project into a Scala.js project by importing these settings
2 | scalaJSSettings
3 |
4 | name := "Example"
5 |
6 | version := "0.1-SNAPSHOT"
7 |
8 | scalaVersion := "2.11.1"
9 |
10 | ScalaJSKeys.persistLauncher := true
11 |
12 | ScalaJSKeys.persistLauncher in Test := false
13 |
14 | libraryDependencies ++= Seq(
15 | "org.scala-lang.modules.scalajs" %%% "scalajs-dom" % "0.6",
16 | "org.scala-lang.modules.scalajs" %% "scalajs-jasmine-test-framework" % scalaJSVersion % "test",
17 | "com.scalatags" %%% "scalatags" % "0.3.8",
18 | "com.scalarx" %%% "scalarx" % "0.2.5"
19 | )
20 |
--------------------------------------------------------------------------------
/d3.scala.diff:
--------------------------------------------------------------------------------
1 | --- src/main/scala/D3/d3.scala 2014-07-03 13:59:52.000000000 -0700
2 | +++ ../scala-js-ts-importer/d3.original.scala 2014-07-03 14:34:04.000000000 -0700
3 | @@ -1,11 +1,10 @@
4 |
5 | -
6 | -package D3 {
7 | -
8 | import scala.scalajs.js
9 | import js.annotation._
10 | -import org.scalajs.dom._
11 | -import js._
12 | +
13 | +package importedjs {
14 | +
15 | +package D3 {
16 |
17 | trait Selectors extends js.Object {
18 | def select(selector: js.String): Selection = ???
19 | @@ -29,8 +28,7 @@
20 | var `type`: js.String = ???
21 | }
22 |
23 | -@JSName("d3")
24 | -object Base extends Selectors {
25 | +trait Base extends Selectors {
26 | var behavior: Behavior.Behavior = ???
27 | var event: Event = ???
28 | def ascending[T](a: T, b: T): js.Number = ???
29 | @@ -61,15 +59,15 @@
30 | def values(map: js.Array[js.Any]): js.Array[js.Any] = ???
31 | def entries(map: js.Any): js.Array[js.Any] = ???
32 | def merge(map: js.Any*): js.Array[js.Any] = ???
33 | - def range(stop: js.Number, step: js.Number): js.Array[js.Number] = ???
34 | + def range(stop: js.Number, step: js.Number = ???): js.Array[js.Number] = ???
35 | def range(start: js.Number, stop: js.Number = ???, step: js.Number = ???): js.Array[js.Number] = ???
36 | def nest(): Nest = ???
37 | - def xhr(url: js.String, callback: js.Function1[XMLHttpRequest, Unit]): Xhr = ???
38 | + def xhr(url: js.String, callback: js.Function1[XMLHttpRequest, Unit] = ???): Xhr = ???
39 | def xhr(url: js.String, mime: js.String, callback: js.Function1[XMLHttpRequest, Unit] = ???): Xhr = ???
40 | - def text(url: js.String, callback: js.Function1[js.String, Unit]): Xhr = ???
41 | + def text(url: js.String, callback: js.Function1[js.String, Unit] = ???): Xhr = ???
42 | def text(url: js.String, mime: js.String, callback: js.Function1[js.String, Unit] = ???): Xhr = ???
43 | - def json(url: js.String, callback: js.Function2[js.Any, js.Any, Unit]): Xhr = ???
44 | - def xml(url: js.String, callback: js.Function1[Document, Unit]): Xhr = ???
45 | + var json: js.Function2[js.String, js.Function2[js.Any, js.Any, Unit], Xhr] = ???
46 | + def xml(url: js.String, callback: js.Function1[Document, Unit] = ???): Xhr = ???
47 | def xml(url: js.String, mime: js.String, callback: js.Function1[Document, Unit] = ???): Xhr = ???
48 | var html: js.Function2[js.String, js.Function1[DocumentFragment, Unit], Xhr] = ???
49 | var csv: Dsv = ???
50 | @@ -97,8 +95,6 @@
51 | def selection(): Selection = ???
52 | var ns: js.Any = ???
53 | var ease: js.Function = ???
54 | -
55 | -
56 | def rgb(r: js.Number, g: js.Number, b: js.Number): D3.Color.RGBColor = ???
57 | def rgb(color: js.String): D3.Color.RGBColor = ???
58 | def hcl(h: js.Number, c: js.Number, l: js.Number): Color.HCLColor = ???
59 | @@ -145,72 +141,65 @@
60 | def response(): js.Function1[XMLHttpRequest, Any] = ???
61 | def response(value: js.Function1[XMLHttpRequest, Any]): Xhr = ???
62 | def get(callback: js.Function1[XMLHttpRequest, Unit] = ???): Xhr = ???
63 | - def post(callback: js.Function1[XMLHttpRequest, Unit]): Xhr = ???
64 | + def post(callback: js.Function1[XMLHttpRequest, Unit] = ???): Xhr = ???
65 | def post(data: js.Any, callback: js.Function1[XMLHttpRequest, Unit] = ???): Xhr = ???
66 | - def send(method: js.String, callback: js.Function1[XMLHttpRequest, Unit]): Xhr = ???
67 | + def send(method: js.String, callback: js.Function1[XMLHttpRequest, Unit] = ???): Xhr = ???
68 | def send(method: js.String, data: js.Any, callback: js.Function1[XMLHttpRequest, Unit] = ???): Xhr = ???
69 | def abort(): Xhr = ???
70 | var on: js.Function2[js.String, js.Function2[js.Any, js.Number, Any], Xhr] = ???
71 | }
72 |
73 | trait Dsv extends js.Object {
74 | - def apply[A <: js.Object](url: js.String, callback: js.Function2[js.Any, js.Array[A], Unit] = ???): Xhr = ???
75 | + def apply(url: js.String, callback: js.Function2[js.Any, js.Array[js.Any], Unit] = ???): Xhr = ???
76 | def parse(string: js.String): js.Array[js.Any] = ???
77 | def parseRows(string: js.String, accessor: js.Function2[js.Array[js.Any], js.Number, Any]): js.Dynamic = ???
78 | def format(rows: js.Array[js.Any]): js.String = ???
79 | }
80 |
81 | -//trait Selection extends Selectors with js.Array[js.Any] {
82 | -trait Selection extends js.Array[js.Any] with Selectors {
83 | +trait Selection extends Selectors with js.Array[js.Any] {
84 | def attr(name: js.String): js.String = ???
85 | def attr(name: js.String, value: js.Any): Selection = ???
86 | - def attr[A <: Any](name: js.String, valueFunction: js.Function2[A, js.Number, Any]): Selection = ???
87 | + def attr(name: js.String, valueFunction: js.Function2[js.Any, js.Number, Any]): Selection = ???
88 | def attr(attrValueMap: Object): Selection = ???
89 | def classed(name: js.String): js.String = ???
90 | def classed(name: js.String, value: js.Any): Selection = ???
91 | def classed(name: js.String, valueFunction: js.Function2[js.Any, js.Number, Any]): Selection = ???
92 | def style(name: js.String): js.String = ???
93 | - def style(name: js.String, value: js.Any, priority: js.String): Selection = ???
94 | - def style[A <: js.Object](name: js.String, valueFunction: Function2[A, js.Number, js.Dynamic], priority: js.String = ???): Selection = ???
95 | + def style(name: js.String, value: js.Any, priority: js.String = ???): Selection = ???
96 | + def style(name: js.String, valueFunction: js.Function2[js.Any, js.Number, Any], priority: js.String = ???): Selection = ???
97 | def style(styleValueMap: Object): Selection = ???
98 | def property(name: js.String): Unit = ???
99 | def property(name: js.String, value: js.Any): Selection = ???
100 | def property(name: js.String, valueFunction: js.Function2[js.Any, js.Number, Any]): Selection = ???
101 | def property(propertyValueMap: Object): Selection = ???
102 | def text(): js.String = ???
103 | - def text(value: js.String): Selection = ???
104 | - def text[A <: js.Any](valueFunction: js.Function2[A, js.Number, js.String]): Selection = ???
105 | + def text(value: js.Any): Selection = ???
106 | + def text(valueFunction: js.Function2[js.Any, js.Number, Any]): Selection = ???
107 | def html(): js.String = ???
108 | def html(value: js.Any): Selection = ???
109 | def html(valueFunction: js.Function2[js.Any, js.Number, Any]): Selection = ???
110 | - def append(el: String): Selection = ???
111 | -
112 | - def insert(el: String, s: String): Selection = ???
113 | + var append: js.Function1[js.String, Selection] = ???
114 | + var insert: js.Function2[js.String, js.String, Selection] = ???
115 | var remove: js.Function0[Selection] = ???
116 | var empty: js.Function0[js.Boolean] = ???
117 | - def data[A](values: js.Array[A]): UpdateSelection = ???
118 | -// def data(values: js.Function2[Int, Int, js.Dynamic]): UpdateSelection = ???
119 | - def data[A](values: js.Function2[js.Number, Int, js.Array[Int]]): UpdateSelection = ???
120 | -// def data[A <: js.Object, B <: js.Object](values: js.Function2[A, Int, js.Array[B]], key: js.Function2[js.Any, js.Number, Any] = ???): UpdateSelection = ???
121 | + def data(values: js.Function2[js.Any, js.Number, js.Array[js.Any]], key: js.Function2[js.Any, js.Number, Any] = ???): UpdateSelection = ???
122 | def data(): js.Array[js.Any] = ???
123 | def datum(values: js.Function2[js.Any, js.Number, Any]): UpdateSelection = ???
124 | def datum(): js.Dynamic = ???
125 | def filter(filter: js.Function2[js.Any, js.Number, js.Boolean], thisArg: js.Any = ???): UpdateSelection = ???
126 | def call(callback: js.Function, args: js.Any*): Selection = ???
127 | - def call(f: Layout.Layout): Selection = ???
128 | - def call(f: Svg.Axis): Selection = ???
129 | def each(eachFunction: js.Function2[js.Any, js.Number, Any]): Selection = ???
130 | def on(`type`: js.String): js.Function2[js.Any, js.Number, Any] = ???
131 | def on(`type`: js.String, listener: js.Function2[js.Any, js.Number, Any], capture: js.Boolean = ???): Selection = ???
132 | def size(): js.Number = ???
133 | def transition(): Transition.Transition = ???
134 | - def sort[T](comparator: js.Function2[T, T, js.Number]): Selection = ???
135 | + def sort[T](comparator: js.Function2[T, T, js.Number] = ???): Selection = ???
136 | var order: js.Function0[Selection] = ???
137 | var node: js.Function0[Element] = ???
138 | }
139 |
140 | trait EnterSelection extends js.Object {
141 | - def append(sel: String): Selection = ???
142 | + var append: js.Function1[js.String, Selection] = ???
143 | var insert: js.Function2[js.String, js.String, Selection] = ???
144 | var select: js.Function1[js.String, Selection] = ???
145 | var empty: js.Function0[js.Boolean] = ???
146 | @@ -220,7 +209,7 @@
147 | }
148 |
149 | trait UpdateSelection extends Selection {
150 | - def enter(): EnterSelection = ???
151 | + var enter: js.Function0[EnterSelection] = ???
152 | var update: js.Function0[Selection] = ???
153 | var exit: js.Function0[Selection] = ???
154 | }
155 | @@ -231,14 +220,11 @@
156 | }
157 |
158 | trait Nest extends js.Object {
159 | - def key[A <: js.Any](keyFunction: js.Function1[A, js.String]): Nest = ???
160 | - def key[A <: js.Any](keyFunction: js.Function2[A, js.Number, js.String]): Nest = ???
161 | + def key(keyFunction: js.Function2[js.Any, js.Number, js.String]): Nest = ???
162 | def sortKeys(comparator: js.Function2[js.Any, js.Any, js.Number]): Nest = ???
163 | def sortValues(comparator: js.Function2[js.Any, js.Any, js.Number]): Nest = ???
164 | - def rollup[A <: Nest](rollupFunction: js.Function1[A, Any]): Nest = ???
165 | - def rollup[A <: Nest](rollupFunction: js.Function2[A, js.Number, Any]): Nest = ???
166 | - def map[A <: Any](values: js.Array[A]): js.Dynamic = ???
167 | - def map[A <: js.Any](values: js.Function1[A,js.Number]): js.Dynamic = ???
168 | + def rollup(rollupFunction: js.Function2[js.Any, js.Number, Any]): Nest = ???
169 | + def map(values: js.Array[js.Any]): js.Dynamic = ???
170 | def entries(values: js.Array[js.Any]): js.Array[NestKeyValue] = ???
171 | }
172 |
173 | @@ -277,7 +263,7 @@
174 | def attr(name: js.String, valueFunction: js.Function2[js.Any, js.Number, Any]): Transition = ???
175 | def attr(attrValueMap: js.Any): Transition = ???
176 | def style(name: js.String): js.String = ???
177 | - def style(name: js.String, value: js.Any, priority: js.String): Transition = ???
178 | + def style(name: js.String, value: js.Any, priority: js.String = ???): Transition = ???
179 | def style(name: js.String, valueFunction: js.Function2[js.Any, js.Number, Any], priority: js.String = ???): Transition = ???
180 | def call(callback: js.Function1[Selection, Unit]): Transition = ???
181 | def select(selector: js.String): Transition = ???
182 | @@ -393,7 +379,7 @@
183 | def sort(comparator: js.Function2[js.Any, js.Any, js.Number]): TreeLayout = ???
184 | def children(): js.Function1[js.Any, Any] = ???
185 | def children(children: js.Function1[js.Any, Any]): TreeLayout = ???
186 | - def nodes[A <: D3.Layout.GraphNode](root: A): TreeLayout = ???
187 | + def nodes(root: GraphNode): TreeLayout = ???
188 | def links(nodes: js.Array[GraphNode]): js.Array[GraphLink] = ???
189 | def seperation(): js.Function2[GraphNode, GraphNode, js.Number] = ???
190 | def seperation(seperation: js.Function2[GraphNode, GraphNode, js.Number]): TreeLayout = ???
191 | @@ -447,7 +433,7 @@
192 | var target: GraphNode = ???
193 | }
194 |
195 | -trait ForceLayout extends js.Function {
196 | +trait ForceLayout extends js.Object {
197 | def apply(): ForceLayout = ???
198 | def size(): js.Number = ???
199 | def size(mysize: js.Array[js.Number]): ForceLayout = ???
200 | @@ -474,9 +460,9 @@
201 | def gravity(number: js.Number): ForceLayout = ???
202 | def gravity(accessor: js.Function2[js.Any, js.Number, js.Number]): ForceLayout = ???
203 | def links(): js.Array[GraphLink] = ???
204 | - def links[A <: D3.Layout.GraphLink](arLinks: js.Array[A]): ForceLayout = ???
205 | - def nodes[A](): js.Array[A] = ???
206 | - def nodes[A <: D3.Layout.GraphNode](arNodes: js.Array[A]): ForceLayout = ???
207 | + def links(arLinks: js.Array[GraphLink]): ForceLayout = ???
208 | + def nodes(): js.Array[GraphNode] = ???
209 | + def nodes(arNodes: js.Array[GraphNode]): ForceLayout = ???
210 | def start(): ForceLayout = ???
211 | def resume(): ForceLayout = ???
212 | def stop(): ForceLayout = ???
213 | @@ -605,7 +591,7 @@
214 | trait Color extends js.Object {
215 | def brighter(k: js.Number): Color = ???
216 | def darker(k: js.Number = ???): Color = ???
217 | - override def toString(): js.String = ???
218 | + def toString(): js.String = ???
219 | }
220 |
221 | trait RGBColor extends Color {
222 | @@ -685,7 +671,7 @@
223 | def tickValues(values: js.Array[js.Any]): Axis = ???
224 | def tickSubdivide(count: js.Number): Axis = ???
225 | def tickSize(major: js.Number = ???, minor: js.Number = ???, end: js.Number = ???): Axis = ???
226 | - def tickFormat[A <: js.Any](formatter: js.Function1[A, js.String]): Axis = ???
227 | + def tickFormat(formatter: js.Function1[js.Any, js.String]): Axis = ???
228 | }
229 |
230 | trait Arc extends js.Object {
231 | @@ -851,9 +837,7 @@
232 |
233 | trait Scale extends js.Object {
234 | def apply(value: js.Any): js.Dynamic = ???
235 | -// def domain(values: js.Array[Double]): Scale = ???
236 | -// def domain(values: js.Array[Int]): Scale = ???
237 | - def domain[A <: js.Number](values: js.Array[A]): Scale = ???
238 | + def domain(values: js.Array[js.Any]): Scale = ???
239 | def domain(): js.Array[js.Any] = ???
240 | def range(values: js.Array[js.Any]): Scale = ???
241 | def range(): js.Array[js.Any] = ???
242 | @@ -864,10 +848,10 @@
243 | trait QuantitiveScale extends Scale {
244 | def apply(value: js.Number): js.Number = ???
245 | def invert(value: js.Number): js.Number = ???
246 | - def domain(values: js.Array[js.Number]): QuantitiveScale = ???
247 | - // override def domain(): js.Array[js.Number] = ???
248 | - def range[A <: js.Number](values: js.Array[A]): QuantitiveScale = ???
249 | - // override def range(): js.Array[js.Number] = ???
250 | + def domain(values: js.Array[js.Any]): QuantitiveScale = ???
251 | + def domain(): js.Array[js.Any] = ???
252 | + def range(values: js.Array[js.Any]): QuantitiveScale = ???
253 | + def range(): js.Array[js.Any] = ???
254 | var rangeRound: js.Function1[js.Array[js.Any], QuantitiveScale] = ???
255 | def interpolate(): D3.Transition.Interpolate = ???
256 | def interpolate(factory: D3.Transition.Interpolate): QuantitiveScale = ???
257 | @@ -875,11 +859,11 @@
258 | def nice(count: js.Number = ???): QuantitiveScale = ???
259 | def ticks(count: js.Number): js.Array[js.Any] = ???
260 | def tickFormat(count: js.Number): js.Function1[js.Number, js.String] = ???
261 | - override def copy(): QuantitiveScale = ???
262 | + def copy(): QuantitiveScale = ???
263 | }
264 |
265 | trait LinearScale extends QuantitiveScale {
266 | - override def apply(value: js.Number): js.Number = ???
267 | + def apply(value: js.Number): js.Number = ???
268 | }
269 |
270 | trait IdentityScale extends Scale {
271 | @@ -890,66 +874,66 @@
272 | }
273 |
274 | trait SqrtScale extends QuantitiveScale {
275 | - override def apply(value: js.Number): js.Number = ???
276 | + def apply(value: js.Number): js.Number = ???
277 | }
278 |
279 | trait PowScale extends QuantitiveScale {
280 | - override def apply(value: js.Number): js.Number = ???
281 | + def apply(value: js.Number): js.Number = ???
282 | }
283 |
284 | trait LogScale extends QuantitiveScale {
285 | - override def apply(value: js.Number): js.Number = ???
286 | + def apply(value: js.Number): js.Number = ???
287 | }
288 |
289 | trait OrdinalScale extends Scale {
290 | - override def apply(value: js.Any): js.Dynamic = ???
291 | + def apply(value: js.Any): js.Dynamic = ???
292 | def domain(values: js.Array[js.Any]): OrdinalScale = ???
293 | - override def domain(): js.Array[js.Any] = ???
294 | - override def range(values: js.Array[js.Any]): OrdinalScale = ???
295 | - override def range(): js.Array[js.Any] = ???
296 | + def domain(): js.Array[js.Any] = ???
297 | + def range(values: js.Array[js.Any]): OrdinalScale = ???
298 | + def range(): js.Array[js.Any] = ???
299 | def rangePoints(interval: js.Array[js.Any], padding: js.Number = ???): OrdinalScale = ???
300 | def rangeBands(interval: js.Array[js.Any], padding: js.Number = ???, outerPadding: js.Number = ???): OrdinalScale = ???
301 | def rangeRoundBands(interval: js.Array[js.Any], padding: js.Number = ???, outerPadding: js.Number = ???): OrdinalScale = ???
302 | def rangeBand(): js.Number = ???
303 | def rangeExtent(): js.Array[js.Any] = ???
304 | - override def copy(): OrdinalScale = ???
305 | + def copy(): OrdinalScale = ???
306 | }
307 |
308 | trait QuantizeScale extends Scale {
309 | - override def apply(value: js.Any): js.Dynamic = ???
310 | + def apply(value: js.Any): js.Dynamic = ???
311 | def domain(values: js.Array[js.Number]): QuantizeScale = ???
312 | - override def domain(): js.Array[js.Any] = ???
313 | - override def range(values: js.Array[js.Any]): QuantizeScale = ???
314 | - override def range(): js.Array[js.Any] = ???
315 | - override def copy(): QuantizeScale = ???
316 | + def domain(): js.Array[js.Any] = ???
317 | + def range(values: js.Array[js.Any]): QuantizeScale = ???
318 | + def range(): js.Array[js.Any] = ???
319 | + def copy(): QuantizeScale = ???
320 | }
321 |
322 | trait ThresholdScale extends Scale {
323 | - override def apply(value: js.Any): js.Dynamic = ???
324 | + def apply(value: js.Any): js.Dynamic = ???
325 | def domain(values: js.Array[js.Number]): ThresholdScale = ???
326 | - override def domain(): js.Array[js.Any] = ???
327 | - override def range(values: js.Array[js.Any]): ThresholdScale = ???
328 | - override def range(): js.Array[js.Any] = ???
329 | - override def copy(): ThresholdScale = ???
330 | + def domain(): js.Array[js.Any] = ???
331 | + def range(values: js.Array[js.Any]): ThresholdScale = ???
332 | + def range(): js.Array[js.Any] = ???
333 | + def copy(): ThresholdScale = ???
334 | }
335 |
336 | trait QuantileScale extends Scale {
337 | - override def apply(value: js.Any): js.Dynamic = ???
338 | + def apply(value: js.Any): js.Dynamic = ???
339 | def domain(values: js.Array[js.Number]): QuantileScale = ???
340 | - override def domain(): js.Array[js.Any] = ???
341 | - override def range(values: js.Array[js.Any]): QuantileScale = ???
342 | - override def range(): js.Array[js.Any] = ???
343 | + def domain(): js.Array[js.Any] = ???
344 | + def range(values: js.Array[js.Any]): QuantileScale = ???
345 | + def range(): js.Array[js.Any] = ???
346 | def quantiles(): js.Array[js.Any] = ???
347 | - override def copy(): QuantileScale = ???
348 | + def copy(): QuantileScale = ???
349 | }
350 |
351 | trait TimeScale extends Scale {
352 | def apply(value: Date): js.Number = ???
353 | def invert(value: js.Number): Date = ???
354 | def domain(values: js.Array[js.Any]): TimeScale = ???
355 | - override def domain(): js.Array[js.Any] = ???
356 | - override def range(values: js.Array[js.Any]): TimeScale = ???
357 | - override def range(): js.Array[js.Any] = ???
358 | + def domain(): js.Array[js.Any] = ???
359 | + def range(values: js.Array[js.Any]): TimeScale = ???
360 | + def range(): js.Array[js.Any] = ???
361 | var rangeRound: js.Function1[js.Array[js.Any], TimeScale] = ???
362 | def interpolate(): D3.Transition.Interpolate = ???
363 | def interpolate(factory: D3.Transition.InterpolateFactory): TimeScale = ???
364 | @@ -957,7 +941,7 @@
365 | def ticks(count: js.Number): js.Array[js.Any] = ???
366 | def ticks(range: D3.Time.Range, count: js.Number): js.Array[js.Any] = ???
367 | def tickFormat(count: js.Number): js.Function1[js.Number, js.String] = ???
368 | - override def copy(): TimeScale = ???
369 | + def copy(): TimeScale = ???
370 | }
371 |
372 | }
373 | @@ -1213,12 +1197,10 @@
374 |
375 | }
376 |
377 | -
378 | -package object D3Obj {
379 | - val d3 = D3.Base
380 | }
381 |
382 | -
383 | }
384 |
385 | -
386 | +package object importedjs extends js.GlobalScope {
387 | + var d3: D3.Base = ???
388 | +}
389 |
--------------------------------------------------------------------------------
/index-fastopt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Demo of Scala.js to D3.js binding test
5 |
6 |
62 |
63 |
64 |
65 |
66 | Force directed graph
67 | Adapted from http://bl.ocks.org/mbostock/4062045
68 | and http://bl.ocks.org/mbostock/4062085
69 | Update
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Example Scala.js application
5 |
6 |
7 |
8 |
9 | Example Scala.js application - full-optimized version
10 |
11 | After having compiled and full-optimized properly the code for the application
12 | (using `sbt fullOptJS`), you should see "It works" herebelow.
13 | See README.md for detailed explanations.
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/miserables.json:
--------------------------------------------------------------------------------
1 | {
2 | "nodes":[
3 | {"name":"Myriel","group":1},
4 | {"name":"Napoleon","group":1},
5 | {"name":"Mlle.Baptistine","group":1},
6 | {"name":"Mme.Magloire","group":1},
7 | {"name":"CountessdeLo","group":1},
8 | {"name":"Geborand","group":1},
9 | {"name":"Champtercier","group":1},
10 | {"name":"Cravatte","group":1},
11 | {"name":"Count","group":1},
12 | {"name":"OldMan","group":1},
13 | {"name":"Labarre","group":2},
14 | {"name":"Valjean","group":2},
15 | {"name":"Marguerite","group":3},
16 | {"name":"Mme.deR","group":2},
17 | {"name":"Isabeau","group":2},
18 | {"name":"Gervais","group":2},
19 | {"name":"Tholomyes","group":3},
20 | {"name":"Listolier","group":3},
21 | {"name":"Fameuil","group":3},
22 | {"name":"Blacheville","group":3},
23 | {"name":"Favourite","group":3},
24 | {"name":"Dahlia","group":3},
25 | {"name":"Zephine","group":3},
26 | {"name":"Fantine","group":3},
27 | {"name":"Mme.Thenardier","group":4},
28 | {"name":"Thenardier","group":4},
29 | {"name":"Cosette","group":5},
30 | {"name":"Javert","group":4},
31 | {"name":"Fauchelevent","group":0},
32 | {"name":"Bamatabois","group":2},
33 | {"name":"Perpetue","group":3},
34 | {"name":"Simplice","group":2},
35 | {"name":"Scaufflaire","group":2},
36 | {"name":"Woman1","group":2},
37 | {"name":"Judge","group":2},
38 | {"name":"Champmathieu","group":2},
39 | {"name":"Brevet","group":2},
40 | {"name":"Chenildieu","group":2},
41 | {"name":"Cochepaille","group":2},
42 | {"name":"Pontmercy","group":4},
43 | {"name":"Boulatruelle","group":6},
44 | {"name":"Eponine","group":4},
45 | {"name":"Anzelma","group":4},
46 | {"name":"Woman2","group":5},
47 | {"name":"MotherInnocent","group":0},
48 | {"name":"Gribier","group":0},
49 | {"name":"Jondrette","group":7},
50 | {"name":"Mme.Burgon","group":7},
51 | {"name":"Gavroche","group":8},
52 | {"name":"Gillenormand","group":5},
53 | {"name":"Magnon","group":5},
54 | {"name":"Mlle.Gillenormand","group":5},
55 | {"name":"Mme.Pontmercy","group":5},
56 | {"name":"Mlle.Vaubois","group":5},
57 | {"name":"Lt.Gillenormand","group":5},
58 | {"name":"Marius","group":8},
59 | {"name":"BaronessT","group":5},
60 | {"name":"Mabeuf","group":8},
61 | {"name":"Enjolras","group":8},
62 | {"name":"Combeferre","group":8},
63 | {"name":"Prouvaire","group":8},
64 | {"name":"Feuilly","group":8},
65 | {"name":"Courfeyrac","group":8},
66 | {"name":"Bahorel","group":8},
67 | {"name":"Bossuet","group":8},
68 | {"name":"Joly","group":8},
69 | {"name":"Grantaire","group":8},
70 | {"name":"MotherPlutarch","group":9},
71 | {"name":"Gueulemer","group":4},
72 | {"name":"Babet","group":4},
73 | {"name":"Claquesous","group":4},
74 | {"name":"Montparnasse","group":4},
75 | {"name":"Toussaint","group":5},
76 | {"name":"Child1","group":10},
77 | {"name":"Child2","group":10},
78 | {"name":"Brujon","group":4},
79 | {"name":"Mme.Hucheloup","group":8}
80 | ],
81 | "links":[
82 | {"source":1,"target":0,"value":1},
83 | {"source":2,"target":0,"value":8},
84 | {"source":3,"target":0,"value":10},
85 | {"source":3,"target":2,"value":6},
86 | {"source":4,"target":0,"value":1},
87 | {"source":5,"target":0,"value":1},
88 | {"source":6,"target":0,"value":1},
89 | {"source":7,"target":0,"value":1},
90 | {"source":8,"target":0,"value":2},
91 | {"source":9,"target":0,"value":1},
92 | {"source":11,"target":10,"value":1},
93 | {"source":11,"target":3,"value":3},
94 | {"source":11,"target":2,"value":3},
95 | {"source":11,"target":0,"value":5},
96 | {"source":12,"target":11,"value":1},
97 | {"source":13,"target":11,"value":1},
98 | {"source":14,"target":11,"value":1},
99 | {"source":15,"target":11,"value":1},
100 | {"source":17,"target":16,"value":4},
101 | {"source":18,"target":16,"value":4},
102 | {"source":18,"target":17,"value":4},
103 | {"source":19,"target":16,"value":4},
104 | {"source":19,"target":17,"value":4},
105 | {"source":19,"target":18,"value":4},
106 | {"source":20,"target":16,"value":3},
107 | {"source":20,"target":17,"value":3},
108 | {"source":20,"target":18,"value":3},
109 | {"source":20,"target":19,"value":4},
110 | {"source":21,"target":16,"value":3},
111 | {"source":21,"target":17,"value":3},
112 | {"source":21,"target":18,"value":3},
113 | {"source":21,"target":19,"value":3},
114 | {"source":21,"target":20,"value":5},
115 | {"source":22,"target":16,"value":3},
116 | {"source":22,"target":17,"value":3},
117 | {"source":22,"target":18,"value":3},
118 | {"source":22,"target":19,"value":3},
119 | {"source":22,"target":20,"value":4},
120 | {"source":22,"target":21,"value":4},
121 | {"source":23,"target":16,"value":3},
122 | {"source":23,"target":17,"value":3},
123 | {"source":23,"target":18,"value":3},
124 | {"source":23,"target":19,"value":3},
125 | {"source":23,"target":20,"value":4},
126 | {"source":23,"target":21,"value":4},
127 | {"source":23,"target":22,"value":4},
128 | {"source":23,"target":12,"value":2},
129 | {"source":23,"target":11,"value":9},
130 | {"source":24,"target":23,"value":2},
131 | {"source":24,"target":11,"value":7},
132 | {"source":25,"target":24,"value":13},
133 | {"source":25,"target":23,"value":1},
134 | {"source":25,"target":11,"value":12},
135 | {"source":26,"target":24,"value":4},
136 | {"source":26,"target":11,"value":31},
137 | {"source":26,"target":16,"value":1},
138 | {"source":26,"target":25,"value":1},
139 | {"source":27,"target":11,"value":17},
140 | {"source":27,"target":23,"value":5},
141 | {"source":27,"target":25,"value":5},
142 | {"source":27,"target":24,"value":1},
143 | {"source":27,"target":26,"value":1},
144 | {"source":28,"target":11,"value":8},
145 | {"source":28,"target":27,"value":1},
146 | {"source":29,"target":23,"value":1},
147 | {"source":29,"target":27,"value":1},
148 | {"source":29,"target":11,"value":2},
149 | {"source":30,"target":23,"value":1},
150 | {"source":31,"target":30,"value":2},
151 | {"source":31,"target":11,"value":3},
152 | {"source":31,"target":23,"value":2},
153 | {"source":31,"target":27,"value":1},
154 | {"source":32,"target":11,"value":1},
155 | {"source":33,"target":11,"value":2},
156 | {"source":33,"target":27,"value":1},
157 | {"source":34,"target":11,"value":3},
158 | {"source":34,"target":29,"value":2},
159 | {"source":35,"target":11,"value":3},
160 | {"source":35,"target":34,"value":3},
161 | {"source":35,"target":29,"value":2},
162 | {"source":36,"target":34,"value":2},
163 | {"source":36,"target":35,"value":2},
164 | {"source":36,"target":11,"value":2},
165 | {"source":36,"target":29,"value":1},
166 | {"source":37,"target":34,"value":2},
167 | {"source":37,"target":35,"value":2},
168 | {"source":37,"target":36,"value":2},
169 | {"source":37,"target":11,"value":2},
170 | {"source":37,"target":29,"value":1},
171 | {"source":38,"target":34,"value":2},
172 | {"source":38,"target":35,"value":2},
173 | {"source":38,"target":36,"value":2},
174 | {"source":38,"target":37,"value":2},
175 | {"source":38,"target":11,"value":2},
176 | {"source":38,"target":29,"value":1},
177 | {"source":39,"target":25,"value":1},
178 | {"source":40,"target":25,"value":1},
179 | {"source":41,"target":24,"value":2},
180 | {"source":41,"target":25,"value":3},
181 | {"source":42,"target":41,"value":2},
182 | {"source":42,"target":25,"value":2},
183 | {"source":42,"target":24,"value":1},
184 | {"source":43,"target":11,"value":3},
185 | {"source":43,"target":26,"value":1},
186 | {"source":43,"target":27,"value":1},
187 | {"source":44,"target":28,"value":3},
188 | {"source":44,"target":11,"value":1},
189 | {"source":45,"target":28,"value":2},
190 | {"source":47,"target":46,"value":1},
191 | {"source":48,"target":47,"value":2},
192 | {"source":48,"target":25,"value":1},
193 | {"source":48,"target":27,"value":1},
194 | {"source":48,"target":11,"value":1},
195 | {"source":49,"target":26,"value":3},
196 | {"source":49,"target":11,"value":2},
197 | {"source":50,"target":49,"value":1},
198 | {"source":50,"target":24,"value":1},
199 | {"source":51,"target":49,"value":9},
200 | {"source":51,"target":26,"value":2},
201 | {"source":51,"target":11,"value":2},
202 | {"source":52,"target":51,"value":1},
203 | {"source":52,"target":39,"value":1},
204 | {"source":53,"target":51,"value":1},
205 | {"source":54,"target":51,"value":2},
206 | {"source":54,"target":49,"value":1},
207 | {"source":54,"target":26,"value":1},
208 | {"source":55,"target":51,"value":6},
209 | {"source":55,"target":49,"value":12},
210 | {"source":55,"target":39,"value":1},
211 | {"source":55,"target":54,"value":1},
212 | {"source":55,"target":26,"value":21},
213 | {"source":55,"target":11,"value":19},
214 | {"source":55,"target":16,"value":1},
215 | {"source":55,"target":25,"value":2},
216 | {"source":55,"target":41,"value":5},
217 | {"source":55,"target":48,"value":4},
218 | {"source":56,"target":49,"value":1},
219 | {"source":56,"target":55,"value":1},
220 | {"source":57,"target":55,"value":1},
221 | {"source":57,"target":41,"value":1},
222 | {"source":57,"target":48,"value":1},
223 | {"source":58,"target":55,"value":7},
224 | {"source":58,"target":48,"value":7},
225 | {"source":58,"target":27,"value":6},
226 | {"source":58,"target":57,"value":1},
227 | {"source":58,"target":11,"value":4},
228 | {"source":59,"target":58,"value":15},
229 | {"source":59,"target":55,"value":5},
230 | {"source":59,"target":48,"value":6},
231 | {"source":59,"target":57,"value":2},
232 | {"source":60,"target":48,"value":1},
233 | {"source":60,"target":58,"value":4},
234 | {"source":60,"target":59,"value":2},
235 | {"source":61,"target":48,"value":2},
236 | {"source":61,"target":58,"value":6},
237 | {"source":61,"target":60,"value":2},
238 | {"source":61,"target":59,"value":5},
239 | {"source":61,"target":57,"value":1},
240 | {"source":61,"target":55,"value":1},
241 | {"source":62,"target":55,"value":9},
242 | {"source":62,"target":58,"value":17},
243 | {"source":62,"target":59,"value":13},
244 | {"source":62,"target":48,"value":7},
245 | {"source":62,"target":57,"value":2},
246 | {"source":62,"target":41,"value":1},
247 | {"source":62,"target":61,"value":6},
248 | {"source":62,"target":60,"value":3},
249 | {"source":63,"target":59,"value":5},
250 | {"source":63,"target":48,"value":5},
251 | {"source":63,"target":62,"value":6},
252 | {"source":63,"target":57,"value":2},
253 | {"source":63,"target":58,"value":4},
254 | {"source":63,"target":61,"value":3},
255 | {"source":63,"target":60,"value":2},
256 | {"source":63,"target":55,"value":1},
257 | {"source":64,"target":55,"value":5},
258 | {"source":64,"target":62,"value":12},
259 | {"source":64,"target":48,"value":5},
260 | {"source":64,"target":63,"value":4},
261 | {"source":64,"target":58,"value":10},
262 | {"source":64,"target":61,"value":6},
263 | {"source":64,"target":60,"value":2},
264 | {"source":64,"target":59,"value":9},
265 | {"source":64,"target":57,"value":1},
266 | {"source":64,"target":11,"value":1},
267 | {"source":65,"target":63,"value":5},
268 | {"source":65,"target":64,"value":7},
269 | {"source":65,"target":48,"value":3},
270 | {"source":65,"target":62,"value":5},
271 | {"source":65,"target":58,"value":5},
272 | {"source":65,"target":61,"value":5},
273 | {"source":65,"target":60,"value":2},
274 | {"source":65,"target":59,"value":5},
275 | {"source":65,"target":57,"value":1},
276 | {"source":65,"target":55,"value":2},
277 | {"source":66,"target":64,"value":3},
278 | {"source":66,"target":58,"value":3},
279 | {"source":66,"target":59,"value":1},
280 | {"source":66,"target":62,"value":2},
281 | {"source":66,"target":65,"value":2},
282 | {"source":66,"target":48,"value":1},
283 | {"source":66,"target":63,"value":1},
284 | {"source":66,"target":61,"value":1},
285 | {"source":66,"target":60,"value":1},
286 | {"source":67,"target":57,"value":3},
287 | {"source":68,"target":25,"value":5},
288 | {"source":68,"target":11,"value":1},
289 | {"source":68,"target":24,"value":1},
290 | {"source":68,"target":27,"value":1},
291 | {"source":68,"target":48,"value":1},
292 | {"source":68,"target":41,"value":1},
293 | {"source":69,"target":25,"value":6},
294 | {"source":69,"target":68,"value":6},
295 | {"source":69,"target":11,"value":1},
296 | {"source":69,"target":24,"value":1},
297 | {"source":69,"target":27,"value":2},
298 | {"source":69,"target":48,"value":1},
299 | {"source":69,"target":41,"value":1},
300 | {"source":70,"target":25,"value":4},
301 | {"source":70,"target":69,"value":4},
302 | {"source":70,"target":68,"value":4},
303 | {"source":70,"target":11,"value":1},
304 | {"source":70,"target":24,"value":1},
305 | {"source":70,"target":27,"value":1},
306 | {"source":70,"target":41,"value":1},
307 | {"source":70,"target":58,"value":1},
308 | {"source":71,"target":27,"value":1},
309 | {"source":71,"target":69,"value":2},
310 | {"source":71,"target":68,"value":2},
311 | {"source":71,"target":70,"value":2},
312 | {"source":71,"target":11,"value":1},
313 | {"source":71,"target":48,"value":1},
314 | {"source":71,"target":41,"value":1},
315 | {"source":71,"target":25,"value":1},
316 | {"source":72,"target":26,"value":2},
317 | {"source":72,"target":27,"value":1},
318 | {"source":72,"target":11,"value":1},
319 | {"source":73,"target":48,"value":2},
320 | {"source":74,"target":48,"value":2},
321 | {"source":74,"target":73,"value":3},
322 | {"source":75,"target":69,"value":3},
323 | {"source":75,"target":68,"value":3},
324 | {"source":75,"target":25,"value":3},
325 | {"source":75,"target":48,"value":1},
326 | {"source":75,"target":41,"value":1},
327 | {"source":75,"target":70,"value":1},
328 | {"source":75,"target":71,"value":1},
329 | {"source":76,"target":64,"value":1},
330 | {"source":76,"target":65,"value":1},
331 | {"source":76,"target":66,"value":1},
332 | {"source":76,"target":63,"value":1},
333 | {"source":76,"target":62,"value":1},
334 | {"source":76,"target":48,"value":1},
335 | {"source":76,"target":58,"value":1}
336 | ]
337 | }
338 |
--------------------------------------------------------------------------------
/population.csv:
--------------------------------------------------------------------------------
1 | year,age,sex,people
2 | 1850,0,1,1483789
3 | 1850,0,2,1450376
4 | 1850,5,1,1411067
5 | 1850,5,2,1359668
6 | 1850,10,1,1260099
7 | 1850,10,2,1216114
8 | 1850,15,1,1077133
9 | 1850,15,2,1110619
10 | 1850,20,1,1017281
11 | 1850,20,2,1003841
12 | 1850,25,1,862547
13 | 1850,25,2,799482
14 | 1850,30,1,730638
15 | 1850,30,2,639636
16 | 1850,35,1,588487
17 | 1850,35,2,505012
18 | 1850,40,1,475911
19 | 1850,40,2,428185
20 | 1850,45,1,384211
21 | 1850,45,2,341254
22 | 1850,50,1,321343
23 | 1850,50,2,286580
24 | 1850,55,1,194080
25 | 1850,55,2,187208
26 | 1850,60,1,174976
27 | 1850,60,2,162236
28 | 1850,65,1,106827
29 | 1850,65,2,105534
30 | 1850,70,1,73677
31 | 1850,70,2,71762
32 | 1850,75,1,40834
33 | 1850,75,2,40229
34 | 1850,80,1,23449
35 | 1850,80,2,22949
36 | 1850,85,1,8186
37 | 1850,85,2,10511
38 | 1850,90,1,5259
39 | 1850,90,2,6569
40 | 1860,0,1,2120846
41 | 1860,0,2,2092162
42 | 1860,5,1,1804467
43 | 1860,5,2,1778772
44 | 1860,10,1,1612640
45 | 1860,10,2,1540350
46 | 1860,15,1,1438094
47 | 1860,15,2,1495999
48 | 1860,20,1,1351121
49 | 1860,20,2,1370462
50 | 1860,25,1,1217615
51 | 1860,25,2,1116373
52 | 1860,30,1,1043174
53 | 1860,30,2,936055
54 | 1860,35,1,866910
55 | 1860,35,2,737136
56 | 1860,40,1,699434
57 | 1860,40,2,616826
58 | 1860,45,1,552404
59 | 1860,45,2,461739
60 | 1860,50,1,456176
61 | 1860,50,2,407305
62 | 1860,55,1,292417
63 | 1860,55,2,267224
64 | 1860,60,1,260887
65 | 1860,60,2,249735
66 | 1860,65,1,149331
67 | 1860,65,2,141405
68 | 1860,70,1,98465
69 | 1860,70,2,101778
70 | 1860,75,1,56699
71 | 1860,75,2,57597
72 | 1860,80,1,29007
73 | 1860,80,2,29506
74 | 1860,85,1,10434
75 | 1860,85,2,14053
76 | 1860,90,1,7232
77 | 1860,90,2,6622
78 | 1870,0,1,2800083
79 | 1870,0,2,2717102
80 | 1870,5,1,2428469
81 | 1870,5,2,2393680
82 | 1870,10,1,2427341
83 | 1870,10,2,2342670
84 | 1870,15,1,1958390
85 | 1870,15,2,2077248
86 | 1870,20,1,1805303
87 | 1870,20,2,1909382
88 | 1870,25,1,1509059
89 | 1870,25,2,1574285
90 | 1870,30,1,1251534
91 | 1870,30,2,1275629
92 | 1870,35,1,1185336
93 | 1870,35,2,1137490
94 | 1870,40,1,968861
95 | 1870,40,2,944401
96 | 1870,45,1,852672
97 | 1870,45,2,747916
98 | 1870,50,1,736387
99 | 1870,50,2,637801
100 | 1870,55,1,486036
101 | 1870,55,2,407819
102 | 1870,60,1,399264
103 | 1870,60,2,374801
104 | 1870,65,1,260829
105 | 1870,65,2,239080
106 | 1870,70,1,173364
107 | 1870,70,2,165501
108 | 1870,75,1,86929
109 | 1870,75,2,89540
110 | 1870,80,1,47427
111 | 1870,80,2,54190
112 | 1870,85,1,15891
113 | 1870,85,2,19302
114 | 1870,90,1,8649
115 | 1870,90,2,13068
116 | 1880,0,1,3533662
117 | 1880,0,2,3421597
118 | 1880,5,1,3297503
119 | 1880,5,2,3179142
120 | 1880,10,1,2911924
121 | 1880,10,2,2813550
122 | 1880,15,1,2457734
123 | 1880,15,2,2527818
124 | 1880,20,1,2547780
125 | 1880,20,2,2512803
126 | 1880,25,1,2119393
127 | 1880,25,2,1974241
128 | 1880,30,1,1749107
129 | 1880,30,2,1596772
130 | 1880,35,1,1540772
131 | 1880,35,2,1483717
132 | 1880,40,1,1237347
133 | 1880,40,2,1239435
134 | 1880,45,1,1065973
135 | 1880,45,2,1003711
136 | 1880,50,1,964484
137 | 1880,50,2,863012
138 | 1880,55,1,679147
139 | 1880,55,2,594843
140 | 1880,60,1,580298
141 | 1880,60,2,526956
142 | 1880,65,1,369398
143 | 1880,65,2,346303
144 | 1880,70,1,255422
145 | 1880,70,2,251860
146 | 1880,75,1,141628
147 | 1880,75,2,143513
148 | 1880,80,1,67526
149 | 1880,80,2,77290
150 | 1880,85,1,22437
151 | 1880,85,2,31227
152 | 1880,90,1,10272
153 | 1880,90,2,15451
154 | 1900,0,1,4619544
155 | 1900,0,2,4589196
156 | 1900,5,1,4465783
157 | 1900,5,2,4390483
158 | 1900,10,1,4057669
159 | 1900,10,2,4001749
160 | 1900,15,1,3774846
161 | 1900,15,2,3801743
162 | 1900,20,1,3694038
163 | 1900,20,2,3751061
164 | 1900,25,1,3389280
165 | 1900,25,2,3236056
166 | 1900,30,1,2918964
167 | 1900,30,2,2665174
168 | 1900,35,1,2633883
169 | 1900,35,2,2347737
170 | 1900,40,1,2261070
171 | 1900,40,2,2004987
172 | 1900,45,1,1868413
173 | 1900,45,2,1648025
174 | 1900,50,1,1571038
175 | 1900,50,2,1411981
176 | 1900,55,1,1161908
177 | 1900,55,2,1064632
178 | 1900,60,1,916571
179 | 1900,60,2,887508
180 | 1900,65,1,672663
181 | 1900,65,2,640212
182 | 1900,70,1,454747
183 | 1900,70,2,440007
184 | 1900,75,1,268211
185 | 1900,75,2,265879
186 | 1900,80,1,127435
187 | 1900,80,2,132449
188 | 1900,85,1,44008
189 | 1900,85,2,48614
190 | 1900,90,1,15164
191 | 1900,90,2,20093
192 | 1910,0,1,5296823
193 | 1910,0,2,5287477
194 | 1910,5,1,4991803
195 | 1910,5,2,4866139
196 | 1910,10,1,4650747
197 | 1910,10,2,4471887
198 | 1910,15,1,4566154
199 | 1910,15,2,4592269
200 | 1910,20,1,4637632
201 | 1910,20,2,4447683
202 | 1910,25,1,4257755
203 | 1910,25,2,3946153
204 | 1910,30,1,3658125
205 | 1910,30,2,3295220
206 | 1910,35,1,3427518
207 | 1910,35,2,3088990
208 | 1910,40,1,2860229
209 | 1910,40,2,2471267
210 | 1910,45,1,2363801
211 | 1910,45,2,2114930
212 | 1910,50,1,2126516
213 | 1910,50,2,1773592
214 | 1910,55,1,1508358
215 | 1910,55,2,1317651
216 | 1910,60,1,1189421
217 | 1910,60,2,1090697
218 | 1910,65,1,850159
219 | 1910,65,2,813868
220 | 1910,70,1,557936
221 | 1910,70,2,547623
222 | 1910,75,1,322679
223 | 1910,75,2,350900
224 | 1910,80,1,161715
225 | 1910,80,2,174315
226 | 1910,85,1,59699
227 | 1910,85,2,62725
228 | 1910,90,1,23929
229 | 1910,90,2,28965
230 | 1920,0,1,5934792
231 | 1920,0,2,5694244
232 | 1920,5,1,5789008
233 | 1920,5,2,5693960
234 | 1920,10,1,5401156
235 | 1920,10,2,5293057
236 | 1920,15,1,4724365
237 | 1920,15,2,4779936
238 | 1920,20,1,4549411
239 | 1920,20,2,4742632
240 | 1920,25,1,4565066
241 | 1920,25,2,4529382
242 | 1920,30,1,4110771
243 | 1920,30,2,3982426
244 | 1920,35,1,4081543
245 | 1920,35,2,3713810
246 | 1920,40,1,3321923
247 | 1920,40,2,3059757
248 | 1920,45,1,3143891
249 | 1920,45,2,2669089
250 | 1920,50,1,2546035
251 | 1920,50,2,2200491
252 | 1920,55,1,1880975
253 | 1920,55,2,1674672
254 | 1920,60,1,1587549
255 | 1920,60,2,1382877
256 | 1920,65,1,1095956
257 | 1920,65,2,989901
258 | 1920,70,1,714618
259 | 1920,70,2,690097
260 | 1920,75,1,417292
261 | 1920,75,2,439465
262 | 1920,80,1,187000
263 | 1920,80,2,211110
264 | 1920,85,1,75991
265 | 1920,85,2,92829
266 | 1920,90,1,22398
267 | 1920,90,2,32085
268 | 1930,0,1,5875250
269 | 1930,0,2,5662530
270 | 1930,5,1,6542592
271 | 1930,5,2,6129561
272 | 1930,10,1,6064820
273 | 1930,10,2,5986529
274 | 1930,15,1,5709452
275 | 1930,15,2,5769587
276 | 1930,20,1,5305992
277 | 1930,20,2,5565382
278 | 1930,25,1,4929853
279 | 1930,25,2,5050229
280 | 1930,30,1,4424408
281 | 1930,30,2,4455213
282 | 1930,35,1,4576531
283 | 1930,35,2,4593776
284 | 1930,40,1,4075139
285 | 1930,40,2,3754022
286 | 1930,45,1,3633152
287 | 1930,45,2,3396558
288 | 1930,50,1,3128108
289 | 1930,50,2,2809191
290 | 1930,55,1,2434077
291 | 1930,55,2,2298614
292 | 1930,60,1,1927564
293 | 1930,60,2,1783515
294 | 1930,65,1,1397275
295 | 1930,65,2,1307312
296 | 1930,70,1,919045
297 | 1930,70,2,918509
298 | 1930,75,1,536375
299 | 1930,75,2,522716
300 | 1930,80,1,246708
301 | 1930,80,2,283579
302 | 1930,85,1,88978
303 | 1930,85,2,109210
304 | 1930,90,1,30338
305 | 1930,90,2,43483
306 | 1940,0,1,5294628
307 | 1940,0,2,5124653
308 | 1940,5,1,5468378
309 | 1940,5,2,5359099
310 | 1940,10,1,5960416
311 | 1940,10,2,5868532
312 | 1940,15,1,6165109
313 | 1940,15,2,6193701
314 | 1940,20,1,5682414
315 | 1940,20,2,5896002
316 | 1940,25,1,5438166
317 | 1940,25,2,5664244
318 | 1940,30,1,5040048
319 | 1940,30,2,5171522
320 | 1940,35,1,4724804
321 | 1940,35,2,4791809
322 | 1940,40,1,4437392
323 | 1940,40,2,4394061
324 | 1940,45,1,4190187
325 | 1940,45,2,4050290
326 | 1940,50,1,3785735
327 | 1940,50,2,3488396
328 | 1940,55,1,2972069
329 | 1940,55,2,2810000
330 | 1940,60,1,2370232
331 | 1940,60,2,2317790
332 | 1940,65,1,1897678
333 | 1940,65,2,1911117
334 | 1940,70,1,1280023
335 | 1940,70,2,1287711
336 | 1940,75,1,713875
337 | 1940,75,2,764915
338 | 1940,80,1,359418
339 | 1940,80,2,414761
340 | 1940,85,1,127303
341 | 1940,85,2,152131
342 | 1940,90,1,42263
343 | 1940,90,2,58119
344 | 1950,0,1,8211806
345 | 1950,0,2,7862267
346 | 1950,5,1,6706601
347 | 1950,5,2,6450863
348 | 1950,10,1,5629744
349 | 1950,10,2,5430835
350 | 1950,15,1,5264129
351 | 1950,15,2,5288742
352 | 1950,20,1,5573308
353 | 1950,20,2,5854227
354 | 1950,25,1,6007254
355 | 1950,25,2,6317332
356 | 1950,30,1,5676022
357 | 1950,30,2,5895178
358 | 1950,35,1,5511364
359 | 1950,35,2,5696261
360 | 1950,40,1,5076985
361 | 1950,40,2,5199224
362 | 1950,45,1,4533177
363 | 1950,45,2,4595842
364 | 1950,50,1,4199164
365 | 1950,50,2,4147295
366 | 1950,55,1,3667351
367 | 1950,55,2,3595158
368 | 1950,60,1,3035038
369 | 1950,60,2,3009768
370 | 1950,65,1,2421234
371 | 1950,65,2,2548250
372 | 1950,70,1,1627920
373 | 1950,70,2,1786831
374 | 1950,75,1,1006530
375 | 1950,75,2,1148469
376 | 1950,80,1,511727
377 | 1950,80,2,637717
378 | 1950,85,1,182821
379 | 1950,85,2,242798
380 | 1950,90,1,54836
381 | 1950,90,2,90766
382 | 1960,0,1,10374975
383 | 1960,0,2,10146999
384 | 1960,5,1,9495503
385 | 1960,5,2,9250741
386 | 1960,10,1,8563700
387 | 1960,10,2,8310764
388 | 1960,15,1,6620902
389 | 1960,15,2,6617493
390 | 1960,20,1,5268384
391 | 1960,20,2,5513495
392 | 1960,25,1,5311805
393 | 1960,25,2,5548259
394 | 1960,30,1,5801342
395 | 1960,30,2,6090862
396 | 1960,35,1,6063063
397 | 1960,35,2,6431337
398 | 1960,40,1,5657943
399 | 1960,40,2,5940520
400 | 1960,45,1,5345658
401 | 1960,45,2,5516028
402 | 1960,50,1,4763364
403 | 1960,50,2,4928844
404 | 1960,55,1,4170581
405 | 1960,55,2,4402878
406 | 1960,60,1,3405293
407 | 1960,60,2,3723839
408 | 1960,65,1,2859371
409 | 1960,65,2,3268699
410 | 1960,70,1,2115763
411 | 1960,70,2,2516479
412 | 1960,75,1,1308913
413 | 1960,75,2,1641371
414 | 1960,80,1,619923
415 | 1960,80,2,856952
416 | 1960,85,1,253245
417 | 1960,85,2,384572
418 | 1960,90,1,75908
419 | 1960,90,2,135774
420 | 1970,0,1,8685121
421 | 1970,0,2,8326887
422 | 1970,5,1,10411131
423 | 1970,5,2,10003293
424 | 1970,10,1,10756403
425 | 1970,10,2,10343538
426 | 1970,15,1,9605399
427 | 1970,15,2,9414284
428 | 1970,20,1,7729202
429 | 1970,20,2,8341830
430 | 1970,25,1,6539301
431 | 1970,25,2,6903041
432 | 1970,30,1,5519879
433 | 1970,30,2,5851441
434 | 1970,35,1,5396732
435 | 1970,35,2,5708021
436 | 1970,40,1,5718538
437 | 1970,40,2,6129319
438 | 1970,45,1,5794120
439 | 1970,45,2,6198742
440 | 1970,50,1,5298312
441 | 1970,50,2,5783817
442 | 1970,55,1,4762911
443 | 1970,55,2,5222164
444 | 1970,60,1,4037643
445 | 1970,60,2,4577251
446 | 1970,65,1,3142606
447 | 1970,65,2,3894827
448 | 1970,70,1,2340826
449 | 1970,70,2,3138009
450 | 1970,75,1,1599269
451 | 1970,75,2,2293376
452 | 1970,80,1,886155
453 | 1970,80,2,1417553
454 | 1970,85,1,371123
455 | 1970,85,2,658511
456 | 1970,90,1,186502
457 | 1970,90,2,314929
458 | 1980,0,1,8439366
459 | 1980,0,2,8081854
460 | 1980,5,1,8680730
461 | 1980,5,2,8275881
462 | 1980,10,1,9452338
463 | 1980,10,2,9048483
464 | 1980,15,1,10698856
465 | 1980,15,2,10410271
466 | 1980,20,1,10486776
467 | 1980,20,2,10614947
468 | 1980,25,1,9624053
469 | 1980,25,2,9827903
470 | 1980,30,1,8705835
471 | 1980,30,2,8955225
472 | 1980,35,1,6852069
473 | 1980,35,2,7134239
474 | 1980,40,1,5692148
475 | 1980,40,2,5953910
476 | 1980,45,1,5342469
477 | 1980,45,2,5697543
478 | 1980,50,1,5603709
479 | 1980,50,2,6110117
480 | 1980,55,1,5485098
481 | 1980,55,2,6160229
482 | 1980,60,1,4696140
483 | 1980,60,2,5456885
484 | 1980,65,1,3893510
485 | 1980,65,2,4896947
486 | 1980,70,1,2857774
487 | 1980,70,2,3963441
488 | 1980,75,1,1840438
489 | 1980,75,2,2951759
490 | 1980,80,1,1012886
491 | 1980,80,2,1919292
492 | 1980,85,1,472338
493 | 1980,85,2,1023115
494 | 1980,90,1,204148
495 | 1980,90,2,499046
496 | 1990,0,1,9307465
497 | 1990,0,2,8894007
498 | 1990,5,1,9274732
499 | 1990,5,2,8799955
500 | 1990,10,1,8782542
501 | 1990,10,2,8337284
502 | 1990,15,1,9020572
503 | 1990,15,2,8590991
504 | 1990,20,1,9436188
505 | 1990,20,2,9152644
506 | 1990,25,1,10658027
507 | 1990,25,2,10587292
508 | 1990,30,1,11028712
509 | 1990,30,2,11105750
510 | 1990,35,1,9853933
511 | 1990,35,2,10038644
512 | 1990,40,1,8712632
513 | 1990,40,2,8928252
514 | 1990,45,1,6848082
515 | 1990,45,2,7115129
516 | 1990,50,1,5553992
517 | 1990,50,2,5899925
518 | 1990,55,1,4981670
519 | 1990,55,2,5460506
520 | 1990,60,1,4953822
521 | 1990,60,2,5663205
522 | 1990,65,1,4538398
523 | 1990,65,2,5594108
524 | 1990,70,1,3429420
525 | 1990,70,2,4610222
526 | 1990,75,1,2344932
527 | 1990,75,2,3723980
528 | 1990,80,1,1342996
529 | 1990,80,2,2545730
530 | 1990,85,1,588790
531 | 1990,85,2,1419494
532 | 1990,90,1,238459
533 | 1990,90,2,745146
534 | 2000,0,1,9735380
535 | 2000,0,2,9310714
536 | 2000,5,1,10552146
537 | 2000,5,2,10069564
538 | 2000,10,1,10563233
539 | 2000,10,2,10022524
540 | 2000,15,1,10237419
541 | 2000,15,2,9692669
542 | 2000,20,1,9731315
543 | 2000,20,2,9324244
544 | 2000,25,1,9659493
545 | 2000,25,2,9518507
546 | 2000,30,1,10205879
547 | 2000,30,2,10119296
548 | 2000,35,1,11475182
549 | 2000,35,2,11635647
550 | 2000,40,1,11320252
551 | 2000,40,2,11488578
552 | 2000,45,1,9925006
553 | 2000,45,2,10261253
554 | 2000,50,1,8507934
555 | 2000,50,2,8911133
556 | 2000,55,1,6459082
557 | 2000,55,2,6921268
558 | 2000,60,1,5123399
559 | 2000,60,2,5668961
560 | 2000,65,1,4453623
561 | 2000,65,2,4804784
562 | 2000,70,1,3792145
563 | 2000,70,2,5184855
564 | 2000,75,1,2912655
565 | 2000,75,2,4355644
566 | 2000,80,1,1902638
567 | 2000,80,2,3221898
568 | 2000,85,1,970357
569 | 2000,85,2,1981156
570 | 2000,90,1,336303
571 | 2000,90,2,1064581
--------------------------------------------------------------------------------
/project/build.properties:
--------------------------------------------------------------------------------
1 | sbt.version=0.13.0
2 |
--------------------------------------------------------------------------------
/project/build.sbt:
--------------------------------------------------------------------------------
1 | addSbtPlugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % "0.5.1")
2 |
--------------------------------------------------------------------------------
/src/main/scala/D3/d3.scala:
--------------------------------------------------------------------------------
1 |
2 |
3 | package D3 {
4 |
5 | import scala.scalajs.js
6 | import js.annotation._
7 | import org.scalajs.dom._
8 | import js._
9 |
10 | trait Selectors extends js.Object {
11 | def select(selector: js.String): Selection = ???
12 | def select(element: EventTarget): Selection = ???
13 | def selectAll(selector: js.String): Selection = ???
14 | def selectAll(elements: js.Array[EventTarget]): Selection = ???
15 | }
16 |
17 | trait Event extends js.Object {
18 | var dx: js.Number = ???
19 | var dy: js.Number = ???
20 | var clientX: js.Number = ???
21 | var clientY: js.Number = ???
22 | var translate: js.Array[js.Number] = ???
23 | var scale: js.Number = ???
24 | var sourceEvent: Event = ???
25 | var x: js.Number = ???
26 | var y: js.Number = ???
27 | var keyCode: js.Number = ???
28 | var altKey: js.Any = ???
29 | var `type`: js.String = ???
30 | }
31 |
32 | @JSName("d3")
33 | object Base extends Selectors {
34 | var behavior: Behavior.Behavior = ???
35 | var event: Event = ???
36 | def ascending[T](a: T, b: T): js.Number = ???
37 | def descending[T](a: T, b: T): js.Number = ???
38 | def min[T, U](arr: js.Array[T], map: js.Function1[T, U]): U = ???
39 | def min[T](arr: js.Array[T]): T = ???
40 | def max[T, U](arr: js.Array[T], map: js.Function1[T, U]): U = ???
41 | def max[T](arr: js.Array[T]): T = ???
42 | def extent[T, U](arr: js.Array[T], map: js.Function1[T, U]): js.Array[U] = ???
43 | def extent[T](arr: js.Array[T]): js.Array[T] = ???
44 | def sum[T](arr: js.Array[T], map: js.Function1[T, js.Number]): js.Number = ???
45 | def sum(arr: js.Array[js.Number]): js.Number = ???
46 | def mean[T](arr: js.Array[T], map: js.Function1[T, js.Number]): js.Number = ???
47 | def mean(arr: js.Array[js.Number]): js.Number = ???
48 | def median[T](arr: js.Array[T], map: js.Function1[T, js.Number]): js.Number = ???
49 | def median(arr: js.Array[js.Number]): js.Number = ???
50 | var quantile: js.Function2[js.Array[js.Number], js.Number, js.Number] = ???
51 | def bisect[T](arr: js.Array[T], x: T, low: js.Number = ???, high: js.Number = ???): js.Number = ???
52 | def bisectLeft[T](arr: js.Array[T], x: T, low: js.Number = ???, high: js.Number = ???): js.Number = ???
53 | def bisectRight[T](arr: js.Array[T], x: T, low: js.Number = ???, high: js.Number = ???): js.Number = ???
54 | def bisector(accessor: js.Function2[js.Any, js.Number, Any]): js.Dynamic = ???
55 | def shuffle[T](arr: js.Array[T]): js.Array[T] = ???
56 | def permute(arr: js.Array[js.Any], indexes: js.Array[js.Any]): js.Array[js.Any] = ???
57 | def zip(arrs: js.Any*): js.Array[js.Any] = ???
58 | def transform(definition: js.String): js.Dynamic = ???
59 | def transpose(matrix: js.Array[js.Any]): js.Array[js.Any] = ???
60 | def keys(map: js.Any): js.Array[js.String] = ???
61 | def values(map: js.Array[js.Any]): js.Array[js.Any] = ???
62 | def entries(map: js.Any): js.Array[js.Any] = ???
63 | def merge(map: js.Any*): js.Array[js.Any] = ???
64 | def range(stop: js.Number, step: js.Number): js.Array[js.Number] = ???
65 | def range(start: js.Number, stop: js.Number = ???, step: js.Number = ???): js.Array[js.Number] = ???
66 | def nest(): Nest = ???
67 | def xhr(url: js.String, callback: js.Function1[XMLHttpRequest, Unit]): Xhr = ???
68 | def xhr(url: js.String, mime: js.String, callback: js.Function1[XMLHttpRequest, Unit] = ???): Xhr = ???
69 | def text(url: js.String, callback: js.Function1[js.String, Unit]): Xhr = ???
70 | def text(url: js.String, mime: js.String, callback: js.Function1[js.String, Unit] = ???): Xhr = ???
71 | def json(url: js.String, callback: js.Function2[js.Any, js.Any, Unit]): Xhr = ???
72 | def xml(url: js.String, callback: js.Function1[Document, Unit]): Xhr = ???
73 | def xml(url: js.String, mime: js.String, callback: js.Function1[Document, Unit] = ???): Xhr = ???
74 | var html: js.Function2[js.String, js.Function1[DocumentFragment, Unit], Xhr] = ???
75 | var csv: Dsv = ???
76 | var tsv: Dsv = ???
77 | var time: Time.Time = ???
78 | var scale: Scale.ScaleBase = ???
79 | var interpolate: Transition.BaseInterpolate = ???
80 | var interpolateNumber: Transition.BaseInterpolate = ???
81 | var interpolateRound: Transition.BaseInterpolate = ???
82 | var interpolateString: Transition.BaseInterpolate = ???
83 | var interpolateRgb: Transition.BaseInterpolate = ???
84 | var interpolateHsl: Transition.BaseInterpolate = ???
85 | var interpolateHcl: Transition.BaseInterpolate = ???
86 | var interpolateLab: Transition.BaseInterpolate = ???
87 | var interpolateArray: Transition.BaseInterpolate = ???
88 | var interpolateObject: Transition.BaseInterpolate = ???
89 | var interpolateTransform: Transition.BaseInterpolate = ???
90 | var interpolators: js.Array[Transition.InterpolateFactory] = ???
91 | var layout: Layout.Layout = ???
92 | var svg: Svg.Svg = ???
93 | var random: Random = ???
94 | def format(specifier: js.String): js.Function1[js.Number, js.String] = ???
95 | def formatPrefix(value: js.Number, precision: js.Number = ???): MetricPrefix = ???
96 | var version: js.String = ???
97 | def selection(): Selection = ???
98 | var ns: js.Any = ???
99 | var ease: js.Function = ???
100 |
101 |
102 | def rgb(r: js.Number, g: js.Number, b: js.Number): D3.Color.RGBColor = ???
103 | def rgb(color: js.String): D3.Color.RGBColor = ???
104 | def hcl(h: js.Number, c: js.Number, l: js.Number): Color.HCLColor = ???
105 | def hcl(color: js.String): Color.HCLColor = ???
106 | def hsl(h: js.Number, s: js.Number, l: js.Number): Color.HSLColor = ???
107 | def hsl(color: js.String): Color.HSLColor = ???
108 | def lab(l: js.Number, a: js.Number, b: js.Number): Color.LABColor = ???
109 | def lab(color: js.String): Color.LABColor = ???
110 | var geo: Geo.Geo = ???
111 | var geom: Geom.Geom = ???
112 | def mouse(container: js.Any): js.Array[js.Number] = ???
113 | def touches(container: js.Any): js.Array[js.Array[js.Number]] = ???
114 | def functor[R, T](value: js.Function1[R, T]): js.Function1[R, T] = ???
115 | def functor[T](value: T): js.Function1[js.Any, T] = ???
116 | def map(`object`: js.Any = ???): Map = ???
117 | def set(array: js.Array[js.Any] = ???): Set = ???
118 | def dispatch(types: js.String*): Dispatch = ???
119 | def rebind(target: js.Any, source: js.Any, names: js.Any*): js.Dynamic = ???
120 | def requote(str: js.String): js.String = ???
121 | var timer: js.Any = ???
122 | def transition(): Transition.Transition = ???
123 | def round(x: js.Number, n: js.Number): js.Number = ???
124 | }
125 |
126 | trait Dispatch extends js.Object {
127 | @JSBracketAccess
128 | def apply(event: js.String): js.Any = ???
129 | @JSBracketAccess
130 | def update(event: js.String, v: js.Any): Unit = ???
131 | def on(`type`: js.String): js.Dynamic = ???
132 | def on(`type`: js.String, listener: js.Any): js.Dynamic = ???
133 | }
134 |
135 | trait MetricPrefix extends js.Object {
136 | var scale: js.Function1[js.Number, js.Number] = ???
137 | var symbol: js.String = ???
138 | }
139 |
140 | trait Xhr extends js.Object {
141 | def header(name: js.String): js.String = ???
142 | def header(name: js.String, value: js.String): Xhr = ???
143 | def mimeType(): js.String = ???
144 | def mimeType(`type`: js.String): Xhr = ???
145 | def response(): js.Function1[XMLHttpRequest, Any] = ???
146 | def response(value: js.Function1[XMLHttpRequest, Any]): Xhr = ???
147 | def get(callback: js.Function1[XMLHttpRequest, Unit] = ???): Xhr = ???
148 | def post(callback: js.Function1[XMLHttpRequest, Unit]): Xhr = ???
149 | def post(data: js.Any, callback: js.Function1[XMLHttpRequest, Unit] = ???): Xhr = ???
150 | def send(method: js.String, callback: js.Function1[XMLHttpRequest, Unit]): Xhr = ???
151 | def send(method: js.String, data: js.Any, callback: js.Function1[XMLHttpRequest, Unit] = ???): Xhr = ???
152 | def abort(): Xhr = ???
153 | var on: js.Function2[js.String, js.Function2[js.Any, js.Number, Any], Xhr] = ???
154 | }
155 |
156 | trait Dsv extends js.Object {
157 | def apply[A <: js.Object](url: js.String, callback: js.Function2[js.Any, js.Array[A], Unit] = ???): Xhr = ???
158 | def parse(string: js.String): js.Array[js.Any] = ???
159 | def parseRows(string: js.String, accessor: js.Function2[js.Array[js.Any], js.Number, Any]): js.Dynamic = ???
160 | def format(rows: js.Array[js.Any]): js.String = ???
161 | }
162 |
163 | //trait Selection extends Selectors with js.Array[js.Any] {
164 | trait Selection extends js.Array[js.Any] with Selectors {
165 | def attr(name: js.String): js.String = ???
166 | def attr(name: js.String, value: js.Any): Selection = ???
167 | def attr[A <: Any](name: js.String, valueFunction: js.Function2[A, js.Number, Any]): Selection = ???
168 | def attr(attrValueMap: Object): Selection = ???
169 | def classed(name: js.String): js.String = ???
170 | def classed(name: js.String, value: js.Any): Selection = ???
171 | def classed(name: js.String, valueFunction: js.Function2[js.Any, js.Number, Any]): Selection = ???
172 | def style(name: js.String): js.String = ???
173 | def style(name: js.String, value: js.Any, priority: js.String): Selection = ???
174 | def style[A <: js.Object](name: js.String, valueFunction: Function2[A, js.Number, js.Dynamic], priority: js.String = ???): Selection = ???
175 | def style(styleValueMap: Object): Selection = ???
176 | def property(name: js.String): Unit = ???
177 | def property(name: js.String, value: js.Any): Selection = ???
178 | def property(name: js.String, valueFunction: js.Function2[js.Any, js.Number, Any]): Selection = ???
179 | def property(propertyValueMap: Object): Selection = ???
180 | def text(): js.String = ???
181 | def text(value: js.String): Selection = ???
182 | def text[A <: js.Any](valueFunction: js.Function2[A, js.Number, js.String]): Selection = ???
183 | def html(): js.String = ???
184 | def html(value: js.Any): Selection = ???
185 | def html(valueFunction: js.Function2[js.Any, js.Number, Any]): Selection = ???
186 | def append(el: String): Selection = ???
187 |
188 | def insert(el: String, s: String): Selection = ???
189 | var remove: js.Function0[Selection] = ???
190 | var empty: js.Function0[js.Boolean] = ???
191 | def data[A](values: js.Array[A]): UpdateSelection = ???
192 | // def data(values: js.Function2[Int, Int, js.Dynamic]): UpdateSelection = ???
193 | def data[A](values: js.Function2[js.Number, Int, js.Array[Int]]): UpdateSelection = ???
194 | // def data[A <: js.Object, B <: js.Object](values: js.Function2[A, Int, js.Array[B]], key: js.Function2[js.Any, js.Number, Any] = ???): UpdateSelection = ???
195 | def data(): js.Array[js.Any] = ???
196 | def datum(values: js.Function2[js.Any, js.Number, Any]): UpdateSelection = ???
197 | def datum(): js.Dynamic = ???
198 | def filter(filter: js.Function2[js.Any, js.Number, js.Boolean], thisArg: js.Any = ???): UpdateSelection = ???
199 | def call(callback: js.Function, args: js.Any*): Selection = ???
200 | def call(f: Layout.Layout): Selection = ???
201 | def call(f: Svg.Axis): Selection = ???
202 | def each(eachFunction: js.Function2[js.Any, js.Number, Any]): Selection = ???
203 | def on(`type`: js.String): js.Function2[js.Any, js.Number, Any] = ???
204 | def on(`type`: js.String, listener: js.Function2[js.Any, js.Number, Any], capture: js.Boolean = ???): Selection = ???
205 | def size(): js.Number = ???
206 | def transition(): Transition.Transition = ???
207 | def sort[T](comparator: js.Function2[T, T, js.Number]): Selection = ???
208 | var order: js.Function0[Selection] = ???
209 | var node: js.Function0[Element] = ???
210 | }
211 |
212 | trait EnterSelection extends js.Object {
213 | def append(sel: String): Selection = ???
214 | var insert: js.Function2[js.String, js.String, Selection] = ???
215 | var select: js.Function1[js.String, Selection] = ???
216 | var empty: js.Function0[js.Boolean] = ???
217 | var node: js.Function0[Element] = ???
218 | var call: js.Function1[js.Function1[EnterSelection, Unit], EnterSelection] = ???
219 | var size: js.Function0[js.Number] = ???
220 | }
221 |
222 | trait UpdateSelection extends Selection {
223 | def enter(): EnterSelection = ???
224 | var update: js.Function0[Selection] = ???
225 | var exit: js.Function0[Selection] = ???
226 | }
227 |
228 | trait NestKeyValue extends js.Object {
229 | var key: js.String = ???
230 | var values: js.Any = ???
231 | }
232 |
233 | trait Nest extends js.Object {
234 | def key[A <: js.Any](keyFunction: js.Function1[A, js.String]): Nest = ???
235 | def key[A <: js.Any](keyFunction: js.Function2[A, js.Number, js.String]): Nest = ???
236 | def sortKeys(comparator: js.Function2[js.Any, js.Any, js.Number]): Nest = ???
237 | def sortValues(comparator: js.Function2[js.Any, js.Any, js.Number]): Nest = ???
238 | def rollup[A <: Nest](rollupFunction: js.Function1[A, Any]): Nest = ???
239 | def rollup[A <: Nest](rollupFunction: js.Function2[A, js.Number, Any]): Nest = ???
240 | def map[A <: Any](values: js.Array[A]): js.Dynamic = ???
241 | def map[A <: js.Any](values: js.Function1[A,js.Number]): js.Dynamic = ???
242 | def entries(values: js.Array[js.Any]): js.Array[NestKeyValue] = ???
243 | }
244 |
245 | trait Map extends js.Object {
246 | def has(key: js.String): js.Boolean = ???
247 | def get(key: js.String): js.Dynamic = ???
248 | def set[T](key: js.String, value: T): T = ???
249 | def remove(key: js.String): js.Boolean = ???
250 | def keys(): js.Array[js.String] = ???
251 | def values(): js.Array[js.Any] = ???
252 | def entries(): js.Array[js.Any] = ???
253 | def forEach(func: js.Function2[js.String, js.Any, Unit]): Unit = ???
254 | }
255 |
256 | trait Set extends js.Object {
257 | def has(value: js.Any): js.Boolean = ???
258 | def add(value: js.Any): js.Dynamic = ???
259 | def remove(value: js.Any): js.Boolean = ???
260 | def values(): js.Array[js.Any] = ???
261 | def forEach(func: js.Function1[js.Any, Unit]): Unit = ???
262 | }
263 |
264 | trait Random extends js.Object {
265 | def normal(mean: js.Number = ???, deviation: js.Number = ???): js.Function0[js.Number] = ???
266 | def logNormal(mean: js.Number = ???, deviation: js.Number = ???): js.Function0[js.Number] = ???
267 | def irwinHall(count: js.Number): js.Function0[js.Number] = ???
268 | def bates(mean: Double): js.Function0[js.Number] = ???
269 | }
270 |
271 | package Transition {
272 |
273 | trait Transition extends js.Object {
274 | def duration(duration: js.Number): Transition = ???
275 | def delay(delay: js.Number): Transition = ???
276 | def attr(name: js.String): js.String = ???
277 | def attr(name: js.String, value: js.Any): Transition = ???
278 | def attr(name: js.String, valueFunction: js.Function2[js.Any, js.Number, Any]): Transition = ???
279 | def attr(attrValueMap: js.Any): Transition = ???
280 | def style(name: js.String): js.String = ???
281 | def style(name: js.String, value: js.Any, priority: js.String): Transition = ???
282 | def style(name: js.String, valueFunction: js.Function2[js.Any, js.Number, Any], priority: js.String = ???): Transition = ???
283 | def call(callback: js.Function1[Selection, Unit]): Transition = ???
284 | def select(selector: js.String): Transition = ???
285 | def select(element: EventTarget): Transition = ???
286 | def selectAll(selector: js.String): Transition = ???
287 | def selectAll(elements: js.Array[EventTarget]): Transition = ???
288 | var each: js.Function2[js.String, js.Function2[js.Any, js.Number, Any], Transition] = ???
289 | var transition: js.Function0[Transition] = ???
290 | var ease: js.Function = ???
291 | def attrTween(name: js.String, tween: js.Function3[js.Any, js.Number, js.Any, BaseInterpolate]): Transition = ???
292 | def styleTween(name: js.String, tween: js.Function3[js.Any, js.Number, js.Any, BaseInterpolate], priority: js.String = ???): Transition = ???
293 | def text(text: js.String): Transition = ???
294 | def tween(name: js.String, factory: InterpolateFactory): Transition = ???
295 | def filter(selector: js.String): Transition = ???
296 | def remove(): Transition = ???
297 | }
298 |
299 | trait InterpolateFactory extends js.Object {
300 | def apply(a: js.Any = ???, b: js.Any = ???): BaseInterpolate = ???
301 | }
302 |
303 | trait BaseInterpolate extends js.Object {
304 | def apply(a: js.Any, b: js.Any = ???): js.Dynamic = ???
305 | }
306 |
307 | trait Interpolate extends js.Object {
308 | def apply(t: js.Any): js.Dynamic = ???
309 | }
310 |
311 | }
312 |
313 | package Time {
314 |
315 | trait Time extends js.Object {
316 | var second: Interval = ???
317 | var minute: Interval = ???
318 | var hour: Interval = ???
319 | var day: Interval = ???
320 | var week: Interval = ???
321 | var sunday: Interval = ???
322 | var monday: Interval = ???
323 | var tuesday: Interval = ???
324 | var wednesday: Interval = ???
325 | var thursday: Interval = ???
326 | var friday: Interval = ???
327 | var saturday: Interval = ???
328 | var month: Interval = ???
329 | var year: Interval = ???
330 | var seconds: Range = ???
331 | var minutes: Range = ???
332 | var hours: Range = ???
333 | var days: Range = ???
334 | var weeks: Range = ???
335 | var months: Range = ???
336 | var years: Range = ???
337 | var sundays: Range = ???
338 | var mondays: Range = ???
339 | var tuesdays: Range = ???
340 | var wednesdays: Range = ???
341 | var thursdays: Range = ???
342 | var fridays: Range = ???
343 | var saturdays: Range = ???
344 | var format: js.Any = ???
345 | var scale: js.Any = ???
346 | }
347 |
348 | trait Range extends js.Object {
349 | def apply(start: Date, end: Date, step: js.Number = ???): js.Array[Date] = ???
350 | }
351 |
352 | trait Interval extends js.Object {
353 | def apply(date: Date): Date = ???
354 | var floor: js.Function1[Date, Date] = ???
355 | var round: js.Function1[Date, Date] = ???
356 | var ceil: js.Function1[Date, Date] = ???
357 | var range: Range = ???
358 | var offset: js.Function2[Date, js.Number, Date] = ???
359 | var utc: Interval = ???
360 | }
361 |
362 | trait TimeFormat extends js.Object {
363 | def apply(date: Date): js.String = ???
364 | var parse: js.Function1[js.String, Date] = ???
365 | }
366 |
367 | }
368 |
369 | package Layout {
370 |
371 | trait Layout extends js.Object {
372 | def stack(): StackLayout = ???
373 | def pie(): PieLayout = ???
374 | def force(): ForceLayout = ???
375 | def tree(): TreeLayout = ???
376 | def bundle(): BundleLayout = ???
377 | def chord(): ChordLayout = ???
378 | def cluster(): ClusterLayout = ???
379 | def hierarchy(): HierarchyLayout = ???
380 | def histogram(): HistogramLayout = ???
381 | def pack(): PackLayout = ???
382 | def partition(): PartitionLayout = ???
383 | def treemap(): TreeMapLayout = ???
384 | }
385 |
386 | trait StackLayout extends js.Object {
387 | def apply[T](layers: js.Array[T], index: js.Number = ???): js.Array[T] = ???
388 | def values(accessor: js.Function1[js.Any, Any] = ???): StackLayout = ???
389 | def offset(offset: js.String): StackLayout = ???
390 | }
391 |
392 | trait TreeLayout extends js.Object {
393 | def sort(): js.Function2[js.Any, js.Any, js.Number] = ???
394 | def sort(comparator: js.Function2[js.Any, js.Any, js.Number]): TreeLayout = ???
395 | def children(): js.Function1[js.Any, Any] = ???
396 | def children(children: js.Function1[js.Any, Any]): TreeLayout = ???
397 | def nodes[A <: D3.Layout.GraphNode](root: A): TreeLayout = ???
398 | def links(nodes: js.Array[GraphNode]): js.Array[GraphLink] = ???
399 | def seperation(): js.Function2[GraphNode, GraphNode, js.Number] = ???
400 | def seperation(seperation: js.Function2[GraphNode, GraphNode, js.Number]): TreeLayout = ???
401 | def size(): js.Array[js.Number] = ???
402 | def size(size: js.Array[js.Number]): TreeLayout = ???
403 | }
404 |
405 | trait PieLayout extends js.Object {
406 | def apply(values: js.Array[js.Any], index: js.Number = ???): js.Array[ArcDescriptor] = ???
407 | def value(): js.Function2[js.Any, js.Number, js.Number] = ???
408 | def value(accessor: js.Function2[js.Any, js.Number, js.Number]): PieLayout = ???
409 | def sort(): js.Function2[js.Any, js.Any, js.Number] = ???
410 | def sort(comparator: js.Function2[js.Any, js.Any, js.Number]): PieLayout = ???
411 | def startAngle(): js.Number = ???
412 | def startAngle(angle: js.Number): PieLayout = ???
413 | def endAngle(): js.Number = ???
414 | def endAngle(angle: js.Number): PieLayout = ???
415 | }
416 |
417 | trait ArcDescriptor extends js.Object {
418 | var value: js.Any = ???
419 | var data: js.Any = ???
420 | var startAngle: js.Number = ???
421 | var endAngle: js.Number = ???
422 | var index: js.Number = ???
423 | }
424 |
425 | trait GraphNode extends js.Object {
426 | var id: js.Number = ???
427 | var index: js.Number = ???
428 | var name: js.String = ???
429 | var px: js.Number = ???
430 | var py: js.Number = ???
431 | var size: js.Number = ???
432 | var weight: js.Number = ???
433 | var x: js.Number = ???
434 | var y: js.Number = ???
435 | var subindex: js.Number = ???
436 | var startAngle: js.Number = ???
437 | var endAngle: js.Number = ???
438 | var value: js.Number = ???
439 | var fixed: js.Boolean = ???
440 | var children: js.Array[GraphNode] = ???
441 | var _children: js.Array[GraphNode] = ???
442 | var parent: GraphNode = ???
443 | var depth: js.Number = ???
444 | }
445 |
446 | trait GraphLink extends js.Object {
447 | var source: GraphNode = ???
448 | var target: GraphNode = ???
449 | }
450 |
451 | trait ForceLayout extends js.Function {
452 | def apply(): ForceLayout = ???
453 | def size(): js.Number = ???
454 | def size(mysize: js.Array[js.Number]): ForceLayout = ???
455 | def size(accessor: js.Function2[js.Any, js.Number, js.Any]): ForceLayout = ???
456 | def linkDistance(): js.Number = ???
457 | def linkDistance(number: js.Number): ForceLayout = ???
458 | def linkDistance(accessor: js.Function2[js.Any, js.Number, js.Number]): ForceLayout = ???
459 | def linkStrength(): js.Number = ???
460 | def linkStrength(number: js.Number): ForceLayout = ???
461 | def linkStrength(accessor: js.Function2[js.Any, js.Number, js.Number]): ForceLayout = ???
462 | def friction(): js.Number = ???
463 | def friction(number: js.Number): ForceLayout = ???
464 | def friction(accessor: js.Function2[js.Any, js.Number, js.Number]): ForceLayout = ???
465 | def alpha(): js.Number = ???
466 | def alpha(number: js.Number): ForceLayout = ???
467 | def alpha(accessor: js.Function2[js.Any, js.Number, js.Number]): ForceLayout = ???
468 | def charge(): js.Number = ???
469 | def charge(number: js.Number): ForceLayout = ???
470 | def charge(accessor: js.Function2[js.Any, js.Number, js.Number]): ForceLayout = ???
471 | def theta(): js.Number = ???
472 | def theta(number: js.Number): ForceLayout = ???
473 | def theta(accessor: js.Function2[js.Any, js.Number, js.Number]): ForceLayout = ???
474 | def gravity(): js.Number = ???
475 | def gravity(number: js.Number): ForceLayout = ???
476 | def gravity(accessor: js.Function2[js.Any, js.Number, js.Number]): ForceLayout = ???
477 | def links(): js.Array[GraphLink] = ???
478 | def links[A <: D3.Layout.GraphLink](arLinks: js.Array[A]): ForceLayout = ???
479 | def nodes[A](): js.Array[A] = ???
480 | def nodes[A <: D3.Layout.GraphNode](arNodes: js.Array[A]): ForceLayout = ???
481 | def start(): ForceLayout = ???
482 | def resume(): ForceLayout = ???
483 | def stop(): ForceLayout = ???
484 | def tick(): ForceLayout = ???
485 | def on(`type`: js.String, listener: js.Function0[Unit]): ForceLayout = ???
486 | def drag(): ForceLayout = ???
487 | }
488 |
489 | trait BundleLayout extends js.Object {
490 | def apply(links: js.Array[GraphLink]): js.Array[js.Array[GraphNode]] = ???
491 | }
492 |
493 | trait ChordLayout extends js.Object {
494 | def matrix(): js.Array[js.Array[js.Number]] = ???
495 | def matrix(matrix: js.Array[js.Array[js.Number]]): ChordLayout = ???
496 | def padding(): js.Number = ???
497 | def padding(padding: js.Number): ChordLayout = ???
498 | def sortGroups(): js.Function2[js.Number, js.Number, js.Number] = ???
499 | def sortGroups(comparator: js.Function2[js.Number, js.Number, js.Number]): ChordLayout = ???
500 | def sortSubgroups(): js.Function2[js.Number, js.Number, js.Number] = ???
501 | def sortSubgroups(comparator: js.Function2[js.Number, js.Number, js.Number]): ChordLayout = ???
502 | def sortChords(): js.Function2[js.Number, js.Number, js.Number] = ???
503 | def sortChords(comparator: js.Function2[js.Number, js.Number, js.Number]): ChordLayout = ???
504 | def chords(): js.Array[GraphLink] = ???
505 | def groups(): js.Array[ArcDescriptor] = ???
506 | }
507 |
508 | trait ClusterLayout extends js.Object {
509 | def sort(): js.Function2[GraphNode, GraphNode, js.Number] = ???
510 | def sort(comparator: js.Function2[GraphNode, GraphNode, js.Number]): ClusterLayout = ???
511 | def children(): js.Function2[js.Any, js.Number, js.Array[GraphNode]] = ???
512 | def children(children: js.Function2[js.Any, js.Number, js.Array[GraphNode]]): ClusterLayout = ???
513 | def nodes(root: GraphNode): js.Array[GraphNode] = ???
514 | def links(nodes: js.Array[GraphNode]): js.Array[GraphLink] = ???
515 | def seperation(): js.Function2[GraphNode, GraphNode, js.Number] = ???
516 | def seperation(seperation: js.Function2[GraphNode, GraphNode, js.Number]): ClusterLayout = ???
517 | def size(): js.Array[js.Number] = ???
518 | def size(size: js.Array[js.Number]): ClusterLayout = ???
519 | def value(): js.Function1[GraphNode, js.Number] = ???
520 | def value(value: js.Function1[GraphNode, js.Number]): ClusterLayout = ???
521 | }
522 |
523 | trait HierarchyLayout extends js.Object {
524 | def sort(): js.Function2[GraphNode, GraphNode, js.Number] = ???
525 | def sort(comparator: js.Function2[GraphNode, GraphNode, js.Number]): HierarchyLayout = ???
526 | def children(): js.Function2[js.Any, js.Number, js.Array[GraphNode]] = ???
527 | def children(children: js.Function2[js.Any, js.Number, js.Array[GraphNode]]): HierarchyLayout = ???
528 | def nodes(root: GraphNode): js.Array[GraphNode] = ???
529 | def links(nodes: js.Array[GraphNode]): js.Array[GraphLink] = ???
530 | def value(): js.Function1[GraphNode, js.Number] = ???
531 | def value(value: js.Function1[GraphNode, js.Number]): HierarchyLayout = ???
532 | def reValue(root: GraphNode): HierarchyLayout = ???
533 | }
534 |
535 | trait Bin extends js.Array[js.Any] {
536 | var x: js.Number = ???
537 | var dx: js.Number = ???
538 | var y: js.Number = ???
539 | }
540 |
541 | trait HistogramLayout extends js.Object {
542 | def apply(values: js.Array[js.Number], index: js.Number = ???): js.Array[Bin] = ???
543 | def value(): js.Function1[js.Any, Any] = ???
544 | def value(accessor: js.Function1[js.Any, Any]): HistogramLayout = ???
545 | def range(): js.Function2[js.Any, js.Number, js.Array[js.Number]] = ???
546 | def range(range: js.Function2[js.Any, js.Number, js.Array[js.Number]]): HistogramLayout = ???
547 | def bins(): js.Function2[js.Array[js.Any], js.Number, js.Array[js.Number]] = ???
548 | def bins(bins: js.Function2[js.Array[js.Any], js.Number, js.Array[js.Number]]): HistogramLayout = ???
549 | def bins(threshold: js.Array[Double]): HistogramLayout = ???
550 | def frequency(): js.Boolean = ???
551 | def frequency(frequency: js.Boolean): HistogramLayout = ???
552 | }
553 |
554 | trait PackLayout extends js.Object {
555 | def sort(): js.Function2[GraphNode, GraphNode, js.Number] = ???
556 | def sort(comparator: js.Function2[GraphNode, GraphNode, js.Number]): PackLayout = ???
557 | def children(): js.Function2[js.Any, js.Number, js.Array[GraphNode]] = ???
558 | def children(children: js.Function2[js.Any, js.Number, js.Array[GraphNode]]): PackLayout = ???
559 | def nodes(root: GraphNode): js.Array[GraphNode] = ???
560 | def links(nodes: js.Array[GraphNode]): js.Array[GraphLink] = ???
561 | def value(): js.Function1[GraphNode, js.Number] = ???
562 | def value(value: js.Function1[GraphNode, js.Number]): PackLayout = ???
563 | def size(): js.Array[js.Number] = ???
564 | def size(size: js.Array[js.Number]): PackLayout = ???
565 | def padding(): js.Number = ???
566 | def padding(padding: js.Number): PackLayout = ???
567 | }
568 |
569 | trait PartitionLayout extends js.Object {
570 | def sort(): js.Function2[GraphNode, GraphNode, js.Number] = ???
571 | def sort(comparator: js.Function2[GraphNode, GraphNode, js.Number]): PackLayout = ???
572 | def children(): js.Function2[js.Any, js.Number, js.Array[GraphNode]] = ???
573 | def children(children: js.Function2[js.Any, js.Number, js.Array[GraphNode]]): PackLayout = ???
574 | def nodes(root: GraphNode): js.Array[GraphNode] = ???
575 | def links(nodes: js.Array[GraphNode]): js.Array[GraphLink] = ???
576 | def value(): js.Function1[GraphNode, js.Number] = ???
577 | def value(value: js.Function1[GraphNode, js.Number]): PackLayout = ???
578 | def size(): js.Array[js.Number] = ???
579 | def size(size: js.Array[js.Number]): PackLayout = ???
580 | }
581 |
582 | trait TreeMapLayout extends js.Object {
583 | def sort(): js.Function2[GraphNode, GraphNode, js.Number] = ???
584 | def sort(comparator: js.Function2[GraphNode, GraphNode, js.Number]): TreeMapLayout = ???
585 | def children(): js.Function2[js.Any, js.Number, js.Array[GraphNode]] = ???
586 | def children(children: js.Function2[js.Any, js.Number, js.Array[GraphNode]]): TreeMapLayout = ???
587 | def nodes(root: GraphNode): js.Array[GraphNode] = ???
588 | def links(nodes: js.Array[GraphNode]): js.Array[GraphLink] = ???
589 | def value(): js.Function1[GraphNode, js.Number] = ???
590 | def value(value: js.Function1[GraphNode, js.Number]): TreeMapLayout = ???
591 | def size(): js.Array[js.Number] = ???
592 | def size(size: js.Array[js.Number]): TreeMapLayout = ???
593 | def padding(): js.Number = ???
594 | def padding(padding: js.Number): TreeMapLayout = ???
595 | def round(): js.Boolean = ???
596 | def round(round: js.Boolean): TreeMapLayout = ???
597 | def sticky(): js.Boolean = ???
598 | def sticky(sticky: js.Boolean): TreeMapLayout = ???
599 | def mode(): js.String = ???
600 | def mode(mode: js.String): TreeMapLayout = ???
601 | }
602 |
603 | }
604 |
605 | package Color {
606 |
607 | trait Color extends js.Object {
608 | def brighter(k: js.Number): Color = ???
609 | def darker(k: js.Number = ???): Color = ???
610 | override def toString(): js.String = ???
611 | }
612 |
613 | trait RGBColor extends Color {
614 | var r: js.Number = ???
615 | var g: js.Number = ???
616 | var b: js.Number = ???
617 | def hsl(): HSLColor = ???
618 | }
619 |
620 | trait HSLColor extends Color {
621 | var h: js.Number = ???
622 | var s: js.Number = ???
623 | var l: js.Number = ???
624 | def rgb(): RGBColor = ???
625 | }
626 |
627 | trait LABColor extends Color {
628 | var l: js.Number = ???
629 | var a: js.Number = ???
630 | var b: js.Number = ???
631 | def rgb(): RGBColor = ???
632 | }
633 |
634 | trait HCLColor extends Color {
635 | var h: js.Number = ???
636 | var c: js.Number = ???
637 | var l: js.Number = ???
638 | def rgb(): RGBColor = ???
639 | }
640 |
641 | }
642 |
643 | package Svg {
644 |
645 | trait Svg extends js.Object {
646 | def symbol(): Symbol = ???
647 | def axis(): Axis = ???
648 | def arc(): Arc = ???
649 | var line: js.Any = ???
650 | def area(): AreaFunc = ???
651 | def brush(): Brush = ???
652 | def chord(): Chord = ???
653 | var diagonal: js.Any = ???
654 | var symbolTypes: js.Array[js.String] = ???
655 | }
656 |
657 | trait AreaObject extends js.Object {
658 | var x: Double = ???
659 | var y0: Double = ???
660 | var y: Double = ???
661 | var y1: Double = ???
662 | }
663 |
664 | trait AreaFunc extends js.Object {
665 | def apply(dat: js.Any): String = ???
666 | def x(a: AreaObject => Double): AreaFunc = ???
667 | def y0(a: AreaObject => Double): AreaFunc = ???
668 | def y1(a: AreaObject => Double): AreaFunc = ???
669 | }
670 |
671 | trait Symbol extends js.Object {
672 | var `type`: js.Function1[js.String, Symbol] = ???
673 | var size: js.Function1[js.Number, Symbol] = ???
674 | }
675 |
676 | trait Brush extends js.Object {
677 | def apply(selection: Selection): Unit = ???
678 | def x(): D3.Scale.Scale = ???
679 | def x(scale: D3.Scale.Scale): Brush = ???
680 | def y(): D3.Scale.Scale = ???
681 | def y(scale: D3.Scale.Scale): Brush = ???
682 | def extent(): js.Array[js.Any] = ???
683 | def extent(values: js.Array[js.Any]): Brush = ???
684 | def clear(): Brush = ???
685 | def empty(): js.Boolean = ???
686 | def on(`type`: js.String): js.Function2[js.Any, js.Number, Any] = ???
687 | def on(`type`: js.String, listener: js.Function2[js.Any, js.Number, Any], capture: js.Boolean = ???): Brush = ???
688 | }
689 |
690 | trait Axis extends js.Object {
691 | def apply(selection: Selection): Unit = ???
692 | def scale(): js.Dynamic = ???
693 | def scale(scale: js.Any): Axis = ???
694 | def orient(): js.String = ???
695 | def orient(orientation: js.String): Axis = ???
696 | def ticks(): js.Array[js.Any] = ???
697 | def ticks(arguments: js.Any*): Axis = ???
698 | def tickPadding(): js.Number = ???
699 | def tickPadding(padding: js.Number): Axis = ???
700 | def tickValues(): js.Array[js.Any] = ???
701 | def tickValues(values: js.Array[js.Any]): Axis = ???
702 | def tickSubdivide(count: js.Number): Axis = ???
703 | def tickSize(major: js.Number = ???, minor: js.Number = ???, end: js.Number = ???): Axis = ???
704 | def tickFormat[A <: js.Any](formatter: js.Function1[A, js.String]): Axis = ???
705 | }
706 |
707 | trait Arc extends js.Object {
708 | def apply(data: js.Any, index: js.Number = ???): js.String = ???
709 | def innerRadius(): js.Function2[js.Any, js.Number, js.Number] = ???
710 | def innerRadius(radius: js.Number): Arc = ???
711 | def outerRadius(): js.Function2[js.Any, js.Number, js.Number] = ???
712 | def outerRadius(radius: js.Number): Arc = ???
713 | def startAngle(): js.Function2[js.Any, js.Number, js.Number] = ???
714 | def startAngle(angle: js.Number): Arc = ???
715 | def endAngle(): js.Function2[js.Any, js.Number, js.Number] = ???
716 | def endAngle(angle: js.Number): Arc = ???
717 | def centroid(data: js.Any, index: js.Number = ???): js.Array[js.Number] = ???
718 | }
719 |
720 | trait Line extends js.Object {
721 | def apply(data: js.Array[js.Any], index: js.Number = ???): js.String = ???
722 | def x(): js.Function2[js.Any, js.Number, js.Number] = ???
723 | def x(accessor: js.Function1[js.Any, js.Number]): Line = ???
724 | def x(cnst: js.Number): Line = ???
725 | def y(): js.Function2[js.Any, js.Number, js.Number] = ???
726 | def y(accessor: js.Function1[js.Any, js.Number]): Line = ???
727 | def y(cnst: js.Number): Line = ???
728 | def interpolate(): js.String = ???
729 | def interpolate(interpolate: js.String): Line = ???
730 | def tension(): js.Number = ???
731 | def tension(tension: js.Number): Line = ???
732 | def defined(): js.Function2[js.Any, js.Number, js.Boolean] = ???
733 | def defined(defined: js.Function1[js.Any, js.Boolean]): Line = ???
734 | }
735 |
736 | trait LineRadial extends js.Object {
737 | def apply(data: js.Array[js.Any], index: js.Number = ???): js.String = ???
738 | def x(): js.Function2[js.Any, js.Number, js.Number] = ???
739 | def x(accessor: js.Function1[js.Any, js.Number]): LineRadial = ???
740 | def x(cnst: js.Number): LineRadial = ???
741 | def y(): js.Function2[js.Any, js.Number, js.Number] = ???
742 | def y(accessor: js.Function1[js.Any, js.Number]): LineRadial = ???
743 | def y(cnst: js.Number): LineRadial = ???
744 | def interpolate(): js.String = ???
745 | def interpolate(interpolate: js.String): LineRadial = ???
746 | def tension(): js.Number = ???
747 | def tension(tension: js.Number): LineRadial = ???
748 | def defined(): js.Function1[js.Any, Any] = ???
749 | def defined(defined: js.Function1[js.Any, Any]): LineRadial = ???
750 | def radius(): js.Function2[js.Any, js.Number, js.Number] = ???
751 | def radius(radius: js.Number): LineRadial = ???
752 | def angle(): js.Function2[js.Any, js.Any, js.Number] = ???
753 | def angle(angle: js.Number): LineRadial = ???
754 | }
755 |
756 | trait Area extends js.Object {
757 | def apply(data: js.Array[js.Any], index: js.Number = ???): js.String = ???
758 | def x(): js.Function2[js.Any, js.Number, js.Number] = ???
759 | def x(accessor: js.Function1[js.Any, js.Number]): Area = ???
760 | def x(cnst: js.Number): Area = ???
761 | def x0(): js.Function2[js.Any, js.Number, js.Number] = ???
762 | def x0(accessor: js.Function1[js.Any, js.Number]): Area = ???
763 | def x0(cnst: js.Number): Area = ???
764 | def x1(): js.Function2[js.Any, js.Number, js.Number] = ???
765 | def x1(accessor: js.Function1[js.Any, js.Number]): Area = ???
766 | def x1(cnst: js.Number): Area = ???
767 | def y(): js.Function2[js.Any, js.Number, js.Number] = ???
768 | def y(accessor: js.Function1[js.Any, js.Number]): Area = ???
769 | def y(cnst: js.Number): Area = ???
770 | def y0(): js.Function2[js.Any, js.Number, js.Number] = ???
771 | def y0(accessor: js.Function1[js.Any, js.Number]): Area = ???
772 | def y0(cnst: js.Number): Area = ???
773 | def y1(): js.Function2[js.Any, js.Number, js.Number] = ???
774 | def y1(accessor: js.Function1[js.Any, js.Number]): Area = ???
775 | def y1(cnst: js.Number): Area = ???
776 | def interpolate(): js.String = ???
777 | def interpolate(interpolate: js.String): Area = ???
778 | def tension(): js.Number = ???
779 | def tension(tension: js.Number): Area = ???
780 | def defined(): js.Function1[js.Any, Any] = ???
781 | def defined(defined: js.Function1[js.Any, Any]): Area = ???
782 | }
783 |
784 | trait AreaRadial extends js.Object {
785 | def apply(data: js.Array[js.Any], index: js.Number = ???): js.String = ???
786 | def x(): js.Function2[js.Any, js.Number, js.Number] = ???
787 | def x(accessor: js.Function1[js.Any, js.Number]): AreaRadial = ???
788 | def x(cnst: js.Number): AreaRadial = ???
789 | def x0(): js.Function2[js.Any, js.Number, js.Number] = ???
790 | def x0(accessor: js.Function1[js.Any, js.Number]): AreaRadial = ???
791 | def x0(cnst: js.Number): AreaRadial = ???
792 | def x1(): js.Function2[js.Any, js.Number, js.Number] = ???
793 | def x1(accessor: js.Function1[js.Any, js.Number]): AreaRadial = ???
794 | def x1(cnst: js.Number): AreaRadial = ???
795 | def y(): js.Function2[js.Any, js.Number, js.Number] = ???
796 | def y(accessor: js.Function1[js.Any, js.Number]): AreaRadial = ???
797 | def y(cnst: js.Number): AreaRadial = ???
798 | def y0(): js.Function2[js.Any, js.Number, js.Number] = ???
799 | def y0(accessor: js.Function1[js.Any, js.Number]): AreaRadial = ???
800 | def y0(cnst: js.Number): AreaRadial = ???
801 | def y1(): js.Function2[js.Any, js.Number, js.Number] = ???
802 | def y1(accessor: js.Function1[js.Any, js.Number]): AreaRadial = ???
803 | def y1(cnst: js.Number): AreaRadial = ???
804 | def interpolate(): js.String = ???
805 | def interpolate(interpolate: js.String): AreaRadial = ???
806 | def tension(): js.Number = ???
807 | def tension(tension: js.Number): AreaRadial = ???
808 | def defined(): js.Function1[js.Any, Any] = ???
809 | def defined(defined: js.Function1[js.Any, Any]): AreaRadial = ???
810 | def radius(): js.Number = ???
811 | def radius(radius: js.Number): AreaRadial = ???
812 | def innerRadius(): js.Number = ???
813 | def innerRadius(radius: js.Number): AreaRadial = ???
814 | def outerRadius(): js.Number = ???
815 | def outerRadius(radius: js.Number): AreaRadial = ???
816 | def angle(): js.Number = ???
817 | def angle(angle: js.Number): AreaRadial = ???
818 | def startAngle(): js.Number = ???
819 | def startAngle(angle: js.Number): AreaRadial = ???
820 | def endAngle(): js.Number = ???
821 | def endAngle(angle: js.Number): AreaRadial = ???
822 | }
823 |
824 | trait Chord extends js.Object {
825 | def apply(datum: js.Any, index: js.Number = ???): js.String = ???
826 | def radius(): js.Number = ???
827 | def radius(radius: js.Number): Chord = ???
828 | def startAngle(): js.Number = ???
829 | def startAngle(angle: js.Number): Chord = ???
830 | def endAngle(): js.Number = ???
831 | def endAngle(angle: js.Number): Chord = ???
832 | def source(): js.Dynamic = ???
833 | def source(angle: js.Any): Chord = ???
834 | def target(): js.Dynamic = ???
835 | def target(angle: js.Any): Chord = ???
836 | }
837 |
838 | trait Diagonal extends js.Object {
839 | def apply(datum: js.Any, index: js.Number = ???): js.String = ???
840 | def projection(): js.Function2[js.Any, js.Number, js.Array[js.Number]] = ???
841 | def projection(proj: js.Function1[js.Any, js.Array[js.Number]]): Diagonal = ???
842 | def source(): js.Function2[js.Any, js.Number, Any] = ???
843 | def source(src: js.Function1[js.Any, Any]): Diagonal = ???
844 | def target(): js.Function2[js.Any, js.Number, Any] = ???
845 | def target(target: js.Function1[js.Any, Any]): Diagonal = ???
846 | }
847 |
848 | }
849 |
850 | package Scale {
851 |
852 | trait ScaleBase extends js.Object {
853 | def linear(): LinearScale = ???
854 | def ordinal(): OrdinalScale = ???
855 | def quantize(): QuantizeScale = ???
856 | def category10(): OrdinalScale = ???
857 | def category20(): OrdinalScale = ???
858 | def category20b(): OrdinalScale = ???
859 | def category20c(): OrdinalScale = ???
860 | def identity(): IdentityScale = ???
861 | def log(): LogScale = ???
862 | def pow(): PowScale = ???
863 | def quantile(): QuantileScale = ???
864 | def sqrt(): SqrtScale = ???
865 | def threshold(): ThresholdScale = ???
866 | }
867 |
868 | trait Scale extends js.Object {
869 | def apply(value: js.Any): js.Dynamic = ???
870 | // def domain(values: js.Array[Double]): Scale = ???
871 | // def domain(values: js.Array[Int]): Scale = ???
872 | def domain[A <: js.Number](values: js.Array[A]): Scale = ???
873 | def domain(): js.Array[js.Any] = ???
874 | def range(values: js.Array[js.Any]): Scale = ???
875 | def range(): js.Array[js.Any] = ???
876 | def invertExtent(y: js.Any): js.Array[js.Any] = ???
877 | def copy(): Scale = ???
878 | }
879 |
880 | trait QuantitiveScale extends Scale {
881 | def apply(value: js.Number): js.Number = ???
882 | def invert(value: js.Number): js.Number = ???
883 | def domain(values: js.Array[js.Number]): QuantitiveScale = ???
884 | // override def domain(): js.Array[js.Number] = ???
885 | def range[A <: js.Number](values: js.Array[A]): QuantitiveScale = ???
886 | // override def range(): js.Array[js.Number] = ???
887 | var rangeRound: js.Function1[js.Array[js.Any], QuantitiveScale] = ???
888 | def interpolate(): D3.Transition.Interpolate = ???
889 | def interpolate(factory: D3.Transition.Interpolate): QuantitiveScale = ???
890 | def clamp(clamp: js.Boolean): QuantitiveScale = ???
891 | def nice(count: js.Number = ???): QuantitiveScale = ???
892 | def ticks(count: js.Number): js.Array[Double] = ???
893 | def tickFormat(count: js.Number): js.Function1[js.Number, js.String] = ???
894 | override def copy(): QuantitiveScale = ???
895 | }
896 |
897 | trait LinearScale extends QuantitiveScale {
898 | override def apply(value: js.Number): js.Number = ???
899 | }
900 |
901 | trait IdentityScale extends Scale {
902 | def apply(value: js.Number): js.Number = ???
903 | def invert(value: js.Number): js.Number = ???
904 | def ticks(count: js.Number): js.Array[js.Any] = ???
905 | def tickFormat(count: js.Number): js.Function1[js.Number, js.String] = ???
906 | }
907 |
908 | trait SqrtScale extends QuantitiveScale {
909 | override def apply(value: js.Number): js.Number = ???
910 | }
911 |
912 | trait PowScale extends QuantitiveScale {
913 | override def apply(value: js.Number): js.Number = ???
914 | }
915 |
916 | trait LogScale extends QuantitiveScale {
917 | override def apply(value: js.Number): js.Number = ???
918 | }
919 |
920 | trait OrdinalScale extends Scale {
921 | override def apply(value: js.Any): js.Dynamic = ???
922 | def domain(values: js.Array[js.Any]): OrdinalScale = ???
923 | override def domain(): js.Array[js.Any] = ???
924 | def range[A <: js.Any](values: js.Array[A]): OrdinalScale = ???
925 | override def range(): js.Array[js.Any] = ???
926 | def rangePoints(interval: js.Array[js.Any], padding: js.Number = ???): OrdinalScale = ???
927 | def rangeBands(interval: js.Array[js.Any], padding: js.Number = ???, outerPadding: js.Number = ???): OrdinalScale = ???
928 | def rangeRoundBands(interval: js.Array[js.Any], padding: js.Number = ???, outerPadding: js.Number = ???): OrdinalScale = ???
929 | def rangeBand(): js.Number = ???
930 | def rangeExtent(): js.Array[js.Any] = ???
931 | override def copy(): OrdinalScale = ???
932 | }
933 |
934 | trait QuantizeScale extends Scale {
935 | override def apply(value: js.Any): js.Dynamic = ???
936 | def domain(values: js.Array[js.Number]): QuantizeScale = ???
937 | override def domain(): js.Array[js.Any] = ???
938 | def range[A <: js.Any](values: js.Array[A]): QuantizeScale = ???
939 | override def range(): js.Array[js.Any] = ???
940 | override def copy(): QuantizeScale = ???
941 | }
942 |
943 | trait ThresholdScale extends Scale {
944 | override def apply(value: js.Any): js.Dynamic = ???
945 | def domain(values: js.Array[js.Number]): ThresholdScale = ???
946 | override def domain(): js.Array[js.Any] = ???
947 | def range[A <: js.Any](values: js.Array[A]): ThresholdScale = ???
948 | override def range(): js.Array[js.Any] = ???
949 | override def copy(): ThresholdScale = ???
950 | }
951 |
952 | trait QuantileScale extends Scale {
953 | override def apply(value: js.Any): js.Dynamic = ???
954 | def domain(values: js.Array[js.Number]): QuantileScale = ???
955 | override def domain(): js.Array[js.Any] = ???
956 | def range[A <: js.Any](values: js.Array[A]): QuantileScale = ???
957 | override def range(): js.Array[js.Any] = ???
958 | def quantiles(): js.Array[js.Any] = ???
959 | override def copy(): QuantileScale = ???
960 | }
961 |
962 | trait TimeScale extends Scale {
963 | def apply(value: Date): js.Number = ???
964 | def invert(value: js.Number): Date = ???
965 | def domain(values: js.Array[js.Any]): TimeScale = ???
966 | override def domain(): js.Array[js.Any] = ???
967 | def range[A <: js.Any](values: js.Array[A]): QuantileScale = ???
968 | override def range(): js.Array[js.Any] = ???
969 | var rangeRound: js.Function1[js.Array[js.Any], TimeScale] = ???
970 | def interpolate(): D3.Transition.Interpolate = ???
971 | def interpolate(factory: D3.Transition.InterpolateFactory): TimeScale = ???
972 | def clamp(clamp: js.Boolean): TimeScale = ???
973 | def ticks(count: js.Number): js.Array[js.Any] = ???
974 | def ticks(range: D3.Time.Range, count: js.Number): js.Array[js.Any] = ???
975 | def tickFormat(count: js.Number): js.Function1[js.Number, js.String] = ???
976 | override def copy(): TimeScale = ???
977 | }
978 |
979 | }
980 |
981 | package Behavior {
982 |
983 | trait Behavior extends js.Object {
984 | def drag(): Drag = ???
985 | def zoom(): Zoom = ???
986 | }
987 |
988 | trait Zoom extends js.Object {
989 | def apply(selection: Selection): Unit = ???
990 | var on: js.Function2[js.String, js.Function2[js.Any, js.Number, Any], Zoom] = ???
991 | def scale(): js.Number = ???
992 | def scale(scale: js.Number): Zoom = ???
993 | def translate(): js.Array[js.Number] = ???
994 | def translate(translate: js.Array[js.Number]): Zoom = ???
995 | def scaleExtent(): js.Array[js.Number] = ???
996 | def scaleExtent(extent: js.Array[js.Number]): Zoom = ???
997 | def x(): D3.Scale.Scale = ???
998 | def x(x: D3.Scale.Scale): Zoom = ???
999 | def y(): D3.Scale.Scale = ???
1000 | def y(y: D3.Scale.Scale): Zoom = ???
1001 | }
1002 |
1003 | trait Drag extends js.Object {
1004 | def apply(): js.Dynamic = ???
1005 | var on: js.Function2[js.String, js.Function2[js.Any, js.Number, Any], Drag] = ???
1006 | def origin(): js.Dynamic = ???
1007 | def origin(origin: js.Any = ???): Drag = ???
1008 | }
1009 |
1010 | }
1011 |
1012 | package Geo {
1013 |
1014 | trait Geo extends js.Object {
1015 | def path(): Path = ???
1016 | def circle(): Circle = ???
1017 | def area(feature: js.Any): js.Number = ???
1018 | def bounds(feature: js.Any): js.Array[js.Array[js.Number]] = ???
1019 | def centroid(feature: js.Any): js.Array[js.Number] = ???
1020 | def distance(a: js.Array[js.Number], b: js.Array[js.Number]): js.Number = ???
1021 | def interpolate(a: js.Array[js.Number], b: js.Array[js.Number]): js.Function1[js.Number, js.Array[js.Number]] = ???
1022 | def length(feature: js.Any): js.Number = ???
1023 | def projection(raw: RawProjection): Projection = ???
1024 | def projectionMutator(rawFactory: RawProjection): ProjectionMutator = ???
1025 | def albers(): Projection = ???
1026 | def albersUsa(): Projection = ???
1027 | var azimuthalEqualArea: js.Any = ???
1028 | var azimuthalEquidistant: js.Any = ???
1029 | var conicConformal: js.Any = ???
1030 | var conicEquidistant: js.Any = ???
1031 | var conicEqualArea: js.Any = ???
1032 | var equirectangular: js.Any = ???
1033 | var gnomonic: js.Any = ???
1034 | var mercator: js.Any = ???
1035 | var orthographic: js.Any = ???
1036 | var stereographic: js.Any = ???
1037 | var transverseMercator: js.Any = ???
1038 | def stream(`object`: GeoJSON, listener: Stream): Unit = ???
1039 | def graticule(): Graticule = ???
1040 | def greatArc(): GreatArc = ???
1041 | def rotation(rotation: js.Array[js.Number]): Rotation = ???
1042 | }
1043 |
1044 | trait Path extends js.Object {
1045 | def apply(feature: js.Any, index: js.Any = ???): js.String = ???
1046 | def projection(): Projection = ???
1047 | def projection(projection: Projection): Path = ???
1048 | def context(): js.String = ???
1049 | def context(context: Context): Path = ???
1050 | def area(feature: js.Any): js.Dynamic = ???
1051 | def centroid(feature: js.Any): js.Dynamic = ???
1052 | def bounds(feature: js.Any): js.Dynamic = ???
1053 | def pointRadius(): js.Number = ???
1054 | def pointRadius(radius: js.Number): Path = ???
1055 | }
1056 |
1057 | trait Context extends js.Object {
1058 | def beginPath(): js.Dynamic = ???
1059 | def moveTo(x: js.Number, y: js.Number): js.Dynamic = ???
1060 | def lineTo(x: js.Number, y: js.Number): js.Dynamic = ???
1061 | def arc(x: js.Number, y: js.Number, radius: js.Number, startAngle: js.Number, endAngle: js.Number): js.Dynamic = ???
1062 | def closePath(): js.Dynamic = ???
1063 | }
1064 |
1065 | trait Circle extends js.Object {
1066 | def apply(args: js.Any*): GeoJSON = ???
1067 | def origin(): js.Array[js.Number] = ???
1068 | def origin(origin: js.Array[js.Number]): Circle = ???
1069 | def angle(): js.Number = ???
1070 | def angle(angle: js.Number): Circle = ???
1071 | def precision(): js.Number = ???
1072 | def precision(precision: js.Number): Circle = ???
1073 | }
1074 |
1075 | trait Graticule extends js.Object {
1076 | def apply(): GeoJSON = ???
1077 | def lines(): js.Array[GeoJSON] = ???
1078 | def outline(): GeoJSON = ???
1079 | def extent(): js.Array[js.Array[js.Number]] = ???
1080 | def extent(extent: js.Array[js.Array[js.Number]]): Graticule = ???
1081 | def minorExtent(): js.Array[js.Array[js.Number]] = ???
1082 | def minorExtent(extent: js.Array[js.Array[js.Number]]): Graticule = ???
1083 | def majorExtent(): js.Array[js.Array[js.Number]] = ???
1084 | def majorExtent(extent: js.Array[js.Array[js.Number]]): Graticule = ???
1085 | def step(): js.Array[js.Array[js.Number]] = ???
1086 | def step(extent: js.Array[js.Array[js.Number]]): Graticule = ???
1087 | def minorStep(): js.Array[js.Array[js.Number]] = ???
1088 | def minorStep(extent: js.Array[js.Array[js.Number]]): Graticule = ???
1089 | def majorStep(): js.Array[js.Array[js.Number]] = ???
1090 | def majorStep(extent: js.Array[js.Array[js.Number]]): Graticule = ???
1091 | def precision(): js.Number = ???
1092 | def precision(precision: js.Number): Graticule = ???
1093 | }
1094 |
1095 | trait GreatArc extends js.Object {
1096 | def apply(): GeoJSON = ???
1097 | def distance(): js.Number = ???
1098 | def source(): js.Dynamic = ???
1099 | def source(source: js.Any): GreatArc = ???
1100 | def target(): js.Dynamic = ???
1101 | def target(target: js.Any): GreatArc = ???
1102 | def precision(): js.Number = ???
1103 | def precision(precision: js.Number): GreatArc = ???
1104 | }
1105 |
1106 | trait GeoJSON extends js.Object {
1107 | var coordinates: js.Array[js.Array[js.Number]] = ???
1108 | var `type`: js.String = ???
1109 | }
1110 |
1111 | trait RawProjection extends js.Object {
1112 | def apply(lambda: js.Number, phi: js.Number): js.Array[js.Number] = ???
1113 | def invert(x: js.Number, y: js.Number): js.Array[js.Number] = ???
1114 | }
1115 |
1116 | trait Projection extends js.Object {
1117 | def apply(coordinates: js.Array[js.Number]): js.Array[js.Number] = ???
1118 | def invert(point: js.Array[js.Number]): js.Array[js.Number] = ???
1119 | def rotate(): js.Array[js.Number] = ???
1120 | def rotate(rotation: js.Array[js.Number]): Projection = ???
1121 | def center(): js.Array[js.Number] = ???
1122 | def center(location: js.Array[js.Number]): Projection = ???
1123 | def parallels(): js.Array[js.Number] = ???
1124 | def parallels(location: js.Array[js.Number]): Projection = ???
1125 | def translate(): js.Array[js.Number] = ???
1126 | def translate(point: js.Array[js.Number]): Projection = ???
1127 | def scale(): js.Number = ???
1128 | def scale(scale: js.Number): Projection = ???
1129 | def clipAngle(): js.Number = ???
1130 | def clipAngle(angle: js.Number): Projection = ???
1131 | def clipExtent(): js.Array[js.Array[js.Number]] = ???
1132 | def clipExtent(extent: js.Array[js.Array[js.Number]]): Projection = ???
1133 | def precision(): js.Number = ???
1134 | def precision(precision: js.Number): Projection = ???
1135 | def stream(listener: Stream = ???): Stream = ???
1136 | }
1137 |
1138 | trait Stream extends js.Object {
1139 | def point(x: js.Number, y: js.Number, z: js.Number = ???): Unit = ???
1140 | def lineStart(): Unit = ???
1141 | def lineEnd(): Unit = ???
1142 | def polygonStart(): Unit = ???
1143 | def polygonEnd(): Unit = ???
1144 | def sphere(): Unit = ???
1145 | }
1146 |
1147 | trait Rotation extends js.Array[js.Any] {
1148 | def apply(location: js.Array[js.Number]): Rotation = ???
1149 | def invert(location: js.Array[js.Number]): Rotation = ???
1150 | }
1151 |
1152 | trait ProjectionMutator extends js.Object {
1153 | def apply(lambda: js.Number, phi: js.Number): Projection = ???
1154 | }
1155 |
1156 | }
1157 |
1158 | package Geom {
1159 |
1160 | trait Geom extends js.Object {
1161 | def voronoi[T](): Voronoi[T] = ???
1162 | def voronoi(vertices: js.Array[Vertice]): js.Array[Polygon] = ???
1163 | def delaunay(vertices: js.Array[Vertice] = ???): js.Array[Polygon] = ???
1164 | def quadtree(): QuadtreeFactory = ???
1165 | def quadtree(points: js.Array[Point], x1: js.Number, y1: js.Number, x2: js.Number, y2: js.Number): Quadtree = ???
1166 | def quadtree(points: js.Array[Point], width: js.Number, height: js.Number): Quadtree = ???
1167 | def polygon(vertices: js.Array[Vertice]): Polygon = ???
1168 | def hull(): Hull = ???
1169 | def hull(vertices: js.Array[Vertice]): js.Array[Vertice] = ???
1170 | }
1171 |
1172 | trait Vertice extends js.Array[js.Number] {
1173 | var angle: js.Number = ???
1174 | }
1175 |
1176 | trait Polygon extends js.Array[Vertice] {
1177 | def area(): js.Number = ???
1178 | def centroid(): js.Array[js.Number] = ???
1179 | def clip(subject: Polygon): Polygon = ???
1180 | }
1181 |
1182 | trait QuadtreeFactory extends js.Object {
1183 | def apply(): Quadtree = ???
1184 | def apply(points: js.Array[Point], x1: js.Number, y1: js.Number, x2: js.Number, y2: js.Number): Quadtree = ???
1185 | def apply(points: js.Array[Point], width: js.Number, height: js.Number): Quadtree = ???
1186 | def x(): js.Function1[js.Any, Any] = ???
1187 | def x(accesor: js.Function1[js.Any, Any]): QuadtreeFactory = ???
1188 | def y(): js.Function1[js.Any, Any] = ???
1189 | def y(accesor: js.Function1[js.Any, Any]): QuadtreeFactory = ???
1190 | def size(): js.Array[js.Number] = ???
1191 | def size(size: js.Array[js.Number]): QuadtreeFactory = ???
1192 | def extent(): js.Array[js.Array[js.Number]] = ???
1193 | def extent(points: js.Array[js.Array[js.Number]]): QuadtreeFactory = ???
1194 | }
1195 |
1196 | trait Quadtree extends js.Object {
1197 | def add(point: Point): Unit = ???
1198 | def visit(callback: js.Any): Unit = ???
1199 | }
1200 |
1201 | trait Point extends js.Object {
1202 | var x: js.Number = ???
1203 | var y: js.Number = ???
1204 | }
1205 |
1206 | trait Voronoi[T] extends js.Object {
1207 | def apply(data: js.Array[T]): js.Array[Polygon] = ???
1208 | def links(data: js.Array[T]): js.Array[Layout.GraphLink] = ???
1209 | def triangles(data: js.Array[T]): js.Array[js.Array[js.Number]] = ???
1210 | def x(): js.Function2[T, js.Number, js.Number] = ???
1211 | def x(accessor: js.Function2[T, js.Number, js.Number]): Voronoi[T] = ???
1212 | def x(constant: js.Number): Voronoi[T] = ???
1213 | def y(): js.Function2[T, js.Number, js.Number] = ???
1214 | def y(accessor: js.Function2[T, js.Number, js.Number]): Voronoi[T] = ???
1215 | def y(constant: js.Number): Voronoi[T] = ???
1216 | def clipExtent(): js.Array[js.Array[js.Number]] = ???
1217 | def clipExtent(extent: js.Array[js.Array[js.Number]]): Voronoi[T] = ???
1218 | def size(): js.Array[js.Number] = ???
1219 | def size(size: js.Array[js.Number]): Voronoi[T] = ???
1220 | }
1221 |
1222 | trait Hull extends js.Object {
1223 | def apply(vertices: js.Array[Vertice]): js.Array[Vertice] = ???
1224 | def x(): js.Function1[js.Any, Any] = ???
1225 | def x(accesor: js.Function1[js.Any, Any]): js.Dynamic = ???
1226 | def y(): js.Function1[js.Any, Any] = ???
1227 | def y(accesor: js.Function1[js.Any, Any]): js.Dynamic = ???
1228 | }
1229 |
1230 | }
1231 |
1232 |
1233 | package object D3Obj {
1234 | val d3 = D3.Base
1235 | }
1236 |
1237 |
1238 | }
1239 |
1240 |
1241 |
--------------------------------------------------------------------------------
/src/main/scala/example/Graph2.scala:
--------------------------------------------------------------------------------
1 | package example
2 |
3 | import scala.scalajs.js
4 | import scala.scalajs.js.annotation.JSExport
5 | import D3.{D3Obj, Nest}
6 | import org.scalajs.dom
7 | import D3.Svg.AreaObject
8 |
9 | import scala.collection.mutable
10 |
11 | // Ported from http://bl.ocks.org/mbostock/4062085
12 |
13 | @JSExport
14 | object Graph2 {
15 |
16 | def draw() {
17 | val d3 = D3Obj.d3
18 |
19 | case class Margin(top: Double, right: Double, bottom: Double, left: Double)
20 |
21 | val margin = Margin(20,40,30,20)
22 | val width = 960 - margin.left - margin.right
23 | val height = 500 - margin.top - margin.bottom
24 | val barWidth = Math.floor(width / 19) - 1
25 |
26 | val x = d3.scale.linear()
27 | .range(Array(barWidth / 2, width - barWidth / 2))
28 |
29 | val y = d3.scale.linear()
30 | .range(Array(height, 0))
31 |
32 | val yAxis = d3.svg.axis()
33 | .scale(y)
34 | .orient("right")
35 | .tickSize(-width)
36 | .tickFormat((d: Double) => { Math.round(d / 1e6).toString + "M" })
37 |
38 | // An SVG element with a bottom-right origin.
39 | val svg: D3.Selection = d3.select("body").append("svg")
40 | .attr("width", width + margin.left + margin.right)
41 | .attr("height", height + margin.top + margin.bottom)
42 | .append("g")
43 | .attr("transform", "translate(" + margin.left + "," + margin.top + ")")
44 |
45 | // A sliding container to hold the bars by birthyear.
46 | var birthyears = svg.append("g")
47 | .attr("class", "birthyears")
48 |
49 | // A label for the current year.
50 | var title: D3.Selection = svg.append("text")
51 | .attr("class", "title")
52 | .attr("dy", ".71em")
53 | .text(2000.toString)
54 |
55 | class Population extends js.Object {
56 | var people: String = ???
57 | var year: String = ???
58 | var age: String = ???
59 | var sex: String = ???
60 | }
61 |
62 | case class Population2(val people: Int, val year: Int, val age: Int, val sex: Int)
63 |
64 | d3.csv("population.csv", (error: js.Any, dataOriginal: js.Array[Population]) => {
65 |
66 | // Convert strings to numbers.
67 | val data: Array[Population2] = for(d: Population <- dataOriginal) yield {
68 | val people = d.people.toInt
69 | val year = d.year.toInt
70 | val age = d.age.toInt
71 | val sex = d.sex.toInt
72 | Population2(people,year,age,sex)
73 | }
74 |
75 | //To print out scala object, you need to use println(), not dom.console.log()
76 | // println(data.mkString(", "))
77 |
78 | // Compute the extent of the data set in age and years.
79 | val age1 = data.map(_.age).max
80 | val year0 = data.map(_.year).min
81 | val year1 = data.map(_.year).max
82 | var year = year1
83 |
84 | // Update the scale domains.
85 | x.domain(Array(year1 - age1, year1).map(_.toDouble))
86 | y.domain(Array(0, d3.max(data, (d: Population2) => d.people)).map(_.toDouble))
87 |
88 |
89 | // Produce a map from year and birthyear to [male, female].
90 | import scala.collection.mutable
91 | val data2: Map[Int,Map[Int,Array[Population2]]] = {
92 | val a: Map[Int,Array[Population2]] = data.groupBy(_.year)
93 | val aa: Map[Int,Map[Int,Array[Population2]]] = (for((k,v)<- a) yield {
94 | (k,v.groupBy(p => p.year - p.age))
95 | }).toMap
96 | aa
97 | }
98 |
99 | val data3 = data2.mapValues(d => {
100 | d.mapValues(_.map(_.people).mkString(","))
101 | })
102 |
103 | // println(data3)
104 |
105 | // Add an axis to show the population values.
106 | svg.append("g")
107 | .attr("class", "y axis")
108 | .attr("transform", "translate(" + width + ",0)")
109 | .call(yAxis)
110 | .selectAll("g")
111 | .filter((value: Any, i: js.Number) => value != null)
112 | .classed("zero", true)
113 |
114 | // Add labeled rects for each birthyear (so that no enter or exit is required).
115 | val birthyear = birthyears.selectAll(".birthyear")
116 | .data(d3.range(year0 - age1, year1 + 1, 5))
117 | .enter().append("g")
118 | .attr("class", "birthyear")
119 | .attr("transform", (birthyear: Double) => "translate(" + x(birthyear) + ",0)")
120 |
121 | birthyear.selectAll("rect")
122 | .data((birthyear: js.Number, i: Int) => {
123 | val a: Array[Int] = data2.get(year).flatMap(_.get(birthyear.toInt)).map(_.map(_.people))
124 | .getOrElse(Array(0,0))
125 |
126 | //.asInstanceOf[js.Dynamic]
127 | // dom.console.log(js.Array(a))
128 | js.Array(a(0),a(1))
129 | })
130 | .enter().append("rect")
131 | .attr("x", -barWidth / 2)
132 | .attr("width", barWidth)
133 | .attr("y", y)
134 | .attr("height", (value: Double) => {
135 | height - y(value)
136 | })
137 |
138 | // Add labels to show birthyear.
139 | birthyear.append("text")
140 | .attr("y", height - 4)
141 | .text((birthyear: Double,i: Double) => birthyear.toString)
142 |
143 | // Add labels to show age (separate; not animated).
144 | svg.selectAll(".age")
145 | .data(d3.range(0, age1 + 1, 5))
146 | .enter().append("text")
147 | .attr("class", "age")
148 | .attr("x", (age: Int) => x(year - age))
149 | .attr("y", height + 4)
150 | .attr("dy", ".71em")
151 | .text((age: Int, _: js.Number) => { age.toString })
152 |
153 | // Allow the arrow keys to change the displayed year.
154 | dom.window.focus()
155 | d3.select(dom.window).on("keydown", (_: js.Any, _: js.Number) => {
156 | year = d3.event.keyCode match {
157 | case 37 => Math.max(year0, year - 10)
158 | case 39 => Math.min(year1, year + 10)
159 | case _ => year
160 | }
161 | update()
162 | 1.asInstanceOf[js.Any]
163 | })
164 |
165 | def update() {
166 | if (data(year) == null) return
167 | title.text(year.toString)
168 |
169 | birthyears.transition()
170 | .duration(750)
171 | .attr("transform", "translate(" + (x(year1) - x(year)) + ",0)")
172 |
173 | birthyear.selectAll("rect")
174 | .data((birthyear: Double, i: Int) => {
175 | val a: Array[Int] = data2.get(year).flatMap(_.get(birthyear.toInt)).map(_.map(_.people))
176 | .getOrElse(Array(0,0))
177 |
178 | //.asInstanceOf[js.Dynamic]
179 | dom.console.log(js.Array(a))
180 | js.Array(a(0),a(1))
181 | })
182 | .transition()
183 | .duration(750)
184 | .attr("y", y)
185 | .attr("height", (value: Double) => height - y(value))
186 | }
187 | ()
188 | })
189 |
190 |
191 |
192 | }
193 | }
194 |
195 | // http://bl.ocks.org/mbostock/4060954
196 |
197 | @JSExport
198 | object Graph3 {
199 | import scala.collection.mutable.ArrayBuffer
200 | val d3 = D3.Base
201 |
202 | def bumpLayer(n: Int): js.Array[js.Object] = {
203 |
204 | def bump(a: ArrayBuffer[Double]) = {
205 | val x = 1 / (.1 + Math.random())
206 | val y = 2 * Math.random() - .5
207 | val z = 10 / (.1 + Math.random())
208 | for(i <- 0 until n) {
209 | val w = (i / n - y) * z
210 | a(i) += x * Math.exp(-w * w)
211 | }
212 | }
213 | import scala.collection.mutable
214 |
215 | val a: ArrayBuffer[Double] = ArrayBuffer.fill(n)(0)
216 | for (i <- 0 until 5) bump(a)
217 | val b: mutable.Seq[js.Object] = mutable.Seq(a.zipWithIndex.map((v: (Double, Int)) => js.Dynamic.literal("x" -> v._2, "y" -> Math.max(0, v._1)) ).toSeq :_*)
218 | val r = js.Array(b :_*)
219 | // dom.console.log(r)
220 | r
221 | }
222 |
223 | def draw() {
224 | val n = 20 // number of layers
225 | val m = 200 // number of samples per layer
226 | val stack = d3.layout.stack().offset("wiggle")
227 | val layers0: js.Array[js.Object] = js.Array(stack(Array.range(0,n).map(_ => bumpLayer(m))) :_*)
228 | val layers1: js.Array[js.Object] = js.Array(stack(Array.range(0,n).map(_ => bumpLayer(m))) :_*)
229 |
230 | dom.console.log("Graph3.draw()")
231 | dom.console.log(layers0,layers1)
232 |
233 | val width = 960.0
234 | val height = 500.0
235 |
236 | val x = d3.scale.linear()
237 | .domain(Array(0, m - 1).map(_.toDouble))
238 | .range(Array(0.0, width))
239 |
240 | // val mx: Double = Array((layers0++layers1) :_*).map((layer: AreaObject) => {
241 | // d.y0 + d.y
242 | // }).max
243 |
244 | val mx = 100
245 | val y = d3.scale.linear()
246 | .domain(Array(0.0, mx))
247 | .range(Array(height, 0))
248 |
249 | val color = d3.scale.linear()
250 | .range(Array("#aad", "#556").asInstanceOf[js.Array[js.Any]])
251 |
252 | val area = d3.svg.area()
253 | .x(d => x(d.x))
254 | .y0(d => y(d.y0))
255 | .y1(d => y(d.y0+d.y))
256 |
257 | val svg = d3.select("body").append("svg")
258 | .attr("width", width)
259 | .attr("height", height)
260 |
261 | dom.console.log(area,area(layers0))
262 |
263 | svg.selectAll("path")
264 | .data(layers0)
265 | .enter().append("path")
266 | .attr("d", area)
267 | .style("fill", (obj: js.Object, a: Double) => color(Math.random()))
268 |
269 | // def transition() {
270 | // d3.selectAll("path")
271 | // .data(() => {
272 | // var d = layers1
273 | // layers1 = layers0
274 | // return layers0 = d
275 | // })
276 | // .transition()
277 | // .duration(2500)
278 | // .attr("d", area)
279 | // }
280 |
281 | }
282 | }
283 |
284 | @JSExport
285 | object Graph4 {
286 | val d3 = D3.Base
287 | trait MySelection extends D3.Selection {
288 | def size(x: Int, y: Int): MySelection = {
289 | this.attr("x", x).attr("y", y).asInstanceOf[MySelection]
290 | }
291 | }
292 |
293 | def size2(sel: D3.Selection, x: Int, y: Int) = {
294 | sel.attr("width",x).attr("height",y)
295 | }
296 | def draw(){
297 | val values: js.Array[js.Number] = js.Array((0 until 1000).map(_ => d3.random.bates(10)()) :_*)
298 |
299 | // A formatter for counts.
300 | val formatCount = d3.format(",.0f")
301 |
302 | case class Margin(top: Double, right: Double, bottom: Double, left: Double)
303 | val margin = Margin(10,30,30,30)
304 |
305 | val width = 960 - margin.left - margin.right
306 | val height = 500 - margin.top - margin.bottom
307 |
308 | val x: D3.Scale.QuantitiveScale = d3.scale.linear()
309 | .domain(Array(0d, 1))
310 | .range(Array(0d, width))
311 |
312 | // Generate a histogram using twenty uniformly-spaced bins.
313 | val data: mutable.Seq[D3.Layout.Bin] = d3.layout.histogram()
314 | .bins(x.ticks(20))(values)
315 |
316 | var y = d3.scale.linear()
317 | .domain(Array(0d, data.map(_.y).max))
318 | .range(Array(height, 0))
319 |
320 | var xAxis = d3.svg.axis()
321 | .scale(x)
322 | .orient("bottom")
323 |
324 | val svg = d3.select("body").append("svg")
325 | .attr("width", width + margin.left + margin.right)
326 | .attr("height", height + margin.top + margin.bottom)
327 | .append("g")
328 | .attr("transform", "translate(" + margin.left + "," + margin.top + ")")
329 |
330 | trait XYObject extends js.Object {
331 | var x: Double = ???
332 | var y: Double = ???
333 | }
334 |
335 | val bar = svg.selectAll(".bar")
336 | .data(js.Array(data :_*))
337 | .enter().append("g")
338 | .attr("class", "bar")
339 | .attr("transform", (d: D3.Layout.Bin) => "translate(" + x(d.x) + "," + y(d.y) + ")")
340 |
341 | bar.append("rect")
342 | .attr("x", 1)
343 | .attr("width", x(data(0).dx) - 1)
344 | .attr("height", (d: D3.Layout.Bin) => height - y(d.y))
345 |
346 | bar.append("text")
347 | .attr("dy", ".75em")
348 | .attr("y", 6)
349 | .attr("x", x(data(0).dx / 2))
350 | .attr("text-anchor", "middle")
351 | .text((d: D3.Layout.Bin, i: Double) => formatCount(d.y))
352 |
353 | svg.append("g")
354 | .attr("class", "x axis")
355 | .attr("transform", "translate(0," + height + ")")
356 | .call(xAxis)
357 |
358 | }
359 | }
--------------------------------------------------------------------------------
/src/main/scala/example/ScalaJSExample.scala:
--------------------------------------------------------------------------------
1 | package example
2 |
3 | import D3._
4 | import scala.scalajs.js
5 | import scala.scalajs.js.annotation.{JSName, JSExport}
6 | import org.scalajs.dom
7 | import D3.Layout.{GraphNode, GraphLink}
8 |
9 | // It's important to specify a type for object when defining a JS object.
10 | // Otherwise this causes exception like the following.
11 | // "Uncaught java.lang.ClassCastException: 1 is not an instance of scala.runtime.Nothing$"
12 | trait LinkData extends GraphLink {
13 | var value: Double = ???
14 | }
15 |
16 | trait NodeData extends GraphNode {
17 | var group: Int = ???
18 | }
19 |
20 | trait GraphData extends js.Object {
21 | var nodes: js.Array[NodeData] = ???
22 | var links: js.Array[LinkData] = ???
23 | }
24 |
25 | //Nesting @JSExport annotation may cause EmptyScope.enter error.
26 | @JSExport
27 | object D3DrawingExamples extends js.JSApp {
28 |
29 | def main(): Unit = {
30 | graph1()
31 | Graph2.draw()
32 | // Graph3.draw()
33 | Graph4.draw()
34 | }
35 |
36 |
37 | // Adapted from http://bl.ocks.org/mbostock/4062045
38 | def graph1() {
39 | val d3 = D3Obj.d3
40 | val color: D3.Scale.OrdinalScale = d3.scale.category20()
41 |
42 | val width: js.Number = 960
43 | val height: js.Number = 500
44 |
45 |
46 | val force = d3.layout.force()
47 | .charge(-120)
48 | .linkDistance(30)
49 | .size(Array(width, height))
50 |
51 | val svg = d3.select("body").append("svg")
52 | .attr("width", width)
53 | .attr("height", height)
54 |
55 | d3.json("miserables.json", (error: Any, g: js.Any) => {
56 | dom.console.log("Loaded!!",g)
57 | val graph = g.asInstanceOf[GraphData]
58 | force
59 | .nodes(graph.nodes)
60 | .links(graph.links)
61 | .start()
62 |
63 | dom.console.log("Force made")
64 |
65 | val link: Selection = svg.selectAll(".link")
66 | .data(graph.links)
67 | .enter().append("line")
68 | .attr("class", "link")
69 | .style("stroke-width",(d: LinkData, i: js.Number) => {
70 | val w = scala.math.sqrt(d.value)
71 | w.asInstanceOf[js.Dynamic]
72 | })
73 |
74 | dom.console.log("Link made")
75 |
76 |
77 | val node: D3.Selection = svg.selectAll(".node")
78 | .data(graph.nodes)
79 | .enter().append("circle")
80 | .attr("class", "node")
81 | .attr("r", 5)
82 | .style("fill", (d: NodeData, i: js.Number) => {
83 | color(d.group)
84 | })
85 | .call(force.drag())
86 |
87 | dom.console.log("Node made")
88 |
89 | node.append("title")
90 | .text((a: NodeData, _: js.Number) => a.name)
91 |
92 | dom.console.log("Title made")
93 |
94 | def tickFunc = () => {
95 | link.attr("x1", (d: LinkData) => d.source.x)
96 | .attr("y1", (d: LinkData) => d.source.y)
97 | .attr("x2", (d: LinkData) => d.target.x)
98 | .attr("y2", (d: LinkData) => d.target.y)
99 |
100 | node.attr("cx", (d: GraphNode) => d.x)
101 | .attr("cy", (d: GraphNode) => d.y)
102 | ()
103 | }
104 |
105 | force.on("tick", tickFunc)
106 | ()
107 | })
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/src/test/scala/example/ScalaJSExampleTest.scala:
--------------------------------------------------------------------------------
1 | package example
2 |
3 | import scala.scalajs.js
4 | import js.Dynamic.{ global => g }
5 | import scala.scalajs.test.JasmineTest
6 |
7 | object ScalaJSExampleTest extends JasmineTest {
8 |
9 | describe("ScalaJSExample") {
10 |
11 | it("should draw svg") {
12 | import example._
13 | // D3DrawingExamples.graph1()
14 | // Graph2.draw()
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/testsuite-fastopt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Test suite - Jasmine HTML reporter example
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/testsuite.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Test suite - Jasmine HTML reporter example
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------