@@ -4,6 +4,7 @@ import jetbrains.datalore.plot.base.Aes
4
4
import kotlinx.datetime.Instant
5
5
import kotlinx.datetime.LocalDate
6
6
import kotlinx.datetime.LocalDateTime
7
+ import kotlinx.datetime.LocalTime
7
8
import org.jetbrains.kotlinx.ggdsl.ir.aes.AesName
8
9
import org.jetbrains.kotlinx.ggdsl.ir.scale.*
9
10
import org.jetbrains.kotlinx.ggdsl.letsplot.internal.*
@@ -24,6 +25,9 @@ internal val dateTimeTypes = setOf(
24
25
)
25
26
26
27
internal fun List <* >?.wrap () = this ?.filterNotNull()
28
+ internal val timeTypes = setOf (
29
+ typeOf<LocalTime >(), typeOf<LocalTime ?>(),
30
+ )
27
31
28
32
/* *
29
33
* TODO datetime
@@ -103,7 +107,23 @@ internal fun Scale.wrap(
103
107
104
108
is PositionalContinuousScale <* > -> {
105
109
when (aesName) {
106
- X -> if (domainType !in dateTimeTypes) {
110
+ X -> if (domainType in dateTimeTypes) {
111
+ scaleXDateTime(
112
+ limits = limits.wrap(),
113
+ name = name,
114
+ breaks = breaks?.values?.filterNotNull(), // todo
115
+ labels = labels,
116
+ format = format
117
+ )
118
+ } else if (domainType in timeTypes) {
119
+ scaleXTime(
120
+ limits = limits.wrap(),
121
+ name = name,
122
+ breaks = breaks?.values?.filterNotNull(), // todo
123
+ labels = labels,
124
+ // format = format
125
+ )
126
+ } else {
107
127
scaleXContinuous(
108
128
limits = limits.wrap(),
109
129
name = name,
@@ -113,35 +133,34 @@ internal fun Scale.wrap(
113
133
format = format,
114
134
naValue = naValue as ? Number
115
135
)
116
- } else {
117
- scaleXDateTime(
136
+ }
137
+
138
+ Y -> if (domainType in dateTimeTypes) {
139
+ scaleYDateTime(
118
140
limits = limits.wrap(),
119
141
name = name,
120
142
breaks = breaks?.values.wrap(),
121
143
labels = labels,
122
144
format = format,
123
145
naValue = naValue
124
146
)
125
- }
126
-
127
- Y -> if (domainType !in dateTimeTypes) {
128
- scaleYContinuous(
147
+ } else if (domainType in timeTypes) {
148
+ scaleYTime(
129
149
limits = limits.wrap(),
130
150
name = name,
131
- breaks = breaks?.values?.map { it as Number } , // TODO() }
151
+ breaks = breaks?.values?.filterNotNull() , // todo
132
152
labels = labels,
133
- trans = (transform as ? Transformation )?.name,
134
- format = format,
135
- naValue = naValue as ? Number
153
+ // format = format
136
154
)
137
155
} else {
138
- scaleYDateTime (
156
+ scaleYContinuous (
139
157
limits = limits.wrap(),
140
158
name = name,
141
- breaks = breaks?.values.wrap(),
159
+ breaks = breaks?.values?.map { it as Number }, // TODO() }
142
160
labels = labels,
161
+ trans = (transform as ? Transformation )?.name,
143
162
format = format,
144
- naValue = naValue
163
+ naValue = naValue as ? Number
145
164
)
146
165
}
147
166
@@ -263,6 +282,7 @@ internal fun Scale.wrap(
263
282
}
264
283
}
265
284
// TODO
285
+
266
286
ALPHA -> if (rangeValues != null ) { scaleAlphaManual(
267
287
limits = domainCategories?.values.wrap(),
268
288
values = rangeValues!! .values.map { it as Double },
@@ -640,6 +660,27 @@ internal fun Scale.wrap(
640
660
format = format,
641
661
)
642
662
663
+ else -> TODO ()
664
+ }
665
+ } else if (domainType in timeTypes) {
666
+ return when (aesName) {
667
+ X -> scaleXTime(
668
+ // limits = limits.toLP(),
669
+ name = name,
670
+ breaks = breaks?.values?.map { it as Number }, // TODO() }
671
+ labels = labels,
672
+ // trans = (transform as? Transformation)?.name,
673
+ // format = format
674
+ )
675
+
676
+ Y -> scaleYTime(
677
+ // limits = categories,
678
+ name = name,
679
+ breaks = breaks?.values.wrap(),
680
+ labels = labels,
681
+ // format = format
682
+ )
683
+
643
684
else -> TODO ()
644
685
}
645
686
}
0 commit comments