Skip to content

Commit bc17090

Browse files
Add Range data type
1 parent 0d5adbe commit bc17090

File tree

4 files changed

+29
-7
lines changed

4 files changed

+29
-7
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package plotly
2+
3+
import plotly.element.LocalDateTime
4+
5+
import scala.language.implicitConversions
6+
7+
sealed abstract class Range extends Product with Serializable
8+
9+
object Range {
10+
final case class Doubles(range: (Double, Double)) extends Range
11+
final case class DateTimes(range: (LocalDateTime, LocalDateTime)) extends Range
12+
13+
implicit def fromDoubleTuple(t: (Double, Double)): Range =
14+
Doubles(t)
15+
implicit def fromDateTimes(t: (LocalDateTime, LocalDateTime)): Range =
16+
DateTimes(t)
17+
}

core/shared/src/main/scala/plotly/layout/Axis.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ import plotly.element._
2828
zeroline: Option[Boolean] = None,
2929
zerolinewidth: Option[Double] = None,
3030
zerolinecolor: Option[Color] = None,
31-
range: Option[Sequence] = None,
31+
range: Option[Range] = None,
3232
autorange: Option[Boolean] = None,
3333
ticks: Option[Ticks] = None,
34-
domain: Option[(Double, Double)] = None,
34+
domain: Option[Range] = None,
3535
side: Option[Side] = None,
3636
anchor: Option[AxisAnchor] = None,
3737
`type`: Option[AxisType] = None,
@@ -70,7 +70,7 @@ object Axis {
7070
zeroline: JBoolean = null,
7171
zerolinewidth: JDouble = null,
7272
zerolinecolor: Color = null,
73-
range: Sequence = null,
73+
range: (Double, Double) = null,
7474
autorange: JBoolean = null,
7575
ticks: Ticks = null,
7676
domain: (Double, Double) = null,
@@ -107,10 +107,10 @@ object Axis {
107107
Option(zeroline) .map(x => x: Boolean),
108108
Option(zerolinewidth) .map(x => x: Double),
109109
Option(zerolinecolor),
110-
Option(range),
110+
Option(range) .map(x => x: Range),
111111
Option(autorange) .map(x => x: Boolean),
112112
Option(ticks),
113-
Option(domain),
113+
Option(domain) .map(x => x: Range),
114114
Option(side),
115115
Option(anchor),
116116
Option(`type`),
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package plotly.layout
22

33
import dataclass.data
4-
import plotly.Sequence
4+
import plotly.Range
55

66
@data(optionSetters = true) class RangeSlider(
7-
range: Option[Sequence] = None
7+
range: Option[Range] = None
88
)

render/shared/src/main/scala/plotly/internals/ArgonautCodecsInternals.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ object ArgonautCodecsInternals extends ArgonautCodecsExtra {
4949
implicit val sequenceNestedIntsIsWrapper: IsWrapper[Sequence.NestedInts] = null
5050
implicit val sequenceStringsIsWrapper: IsWrapper[Sequence.Strings] = null
5151
implicit val sequenceDatetimesIsWrapper: IsWrapper[Sequence.DateTimes] = null
52+
implicit val rangeDoublesIsWrapper: IsWrapper[Range.Doubles] = null
53+
implicit val rangeDatetimesIsWrapper: IsWrapper[Range.DateTimes] = null
5254
implicit val doubleElementIsWrapper: IsWrapper[Element.DoubleElement] = null
5355
implicit val stringElementIsWrapper: IsWrapper[Element.StringElement] = null
5456
implicit def oneOrSeqOneIsWrapper[T]: IsWrapper[OneOrSeq.One[T]] = null
@@ -408,6 +410,9 @@ object ArgonautCodecsInternals extends ArgonautCodecsExtra {
408410
implicit val sequenceJsonCodec: JsonSumCodecFor[Sequence] =
409411
JsonSumCodecFor(jsonSumDirectCodecFor("sequence"))
410412

413+
implicit val rangeJsonCodec: JsonSumCodecFor[Range] =
414+
JsonSumCodecFor(jsonSumDirectCodecFor("range"))
415+
411416
implicit val boxPointsJsonCodec: JsonSumCodecFor[BoxPoints] =
412417
JsonSumCodecFor(jsonSumDirectCodecFor("box points"))
413418

0 commit comments

Comments
 (0)