Skip to content

Commit 44d0033

Browse files
fix local time
1 parent 3a24ef0 commit 44d0033

File tree

4 files changed

+79
-39
lines changed

4 files changed

+79
-39
lines changed

ggdsl-lets-plot/src/main/kotlin/org/jetbrains/kotlinx/ggdsl/letsplot/translator/LayerWrapper.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
package org.jetbrains.kotlinx.ggdsl.letsplot.translator
66

77
import org.jetbrains.kotlinx.ggdsl.ir.Layer
8+
import org.jetbrains.kotlinx.ggdsl.letsplot.feature.Reversed
89
import org.jetbrains.kotlinx.ggdsl.letsplot.internal.GROUP
910
import org.jetbrains.kotlinx.ggdsl.letsplot.internal.MERGED_GROUPS
10-
import org.jetbrains.kotlinx.ggdsl.letsplot.feature.Reversed
1111
import org.jetbrains.kotlinx.ggdsl.letsplot.position.Position
1212
import org.jetbrains.kotlinx.ggdsl.letsplot.tooltips.feature.LayerTooltips
1313
import org.jetbrains.letsPlot.Stat
@@ -37,4 +37,3 @@ internal class LayerWrapper internal constructor(private val layer: Layer, addGr
3737
}.toMap()
3838
)
3939
}
40-

ggdsl-lets-plot/src/main/kotlin/org/jetbrains/kotlinx/ggdsl/letsplot/translator/data.kt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import org.jetbrains.kotlinx.ggdsl.ir.data.NamedDataInterface
77
import org.jetbrains.kotlinx.ggdsl.ir.data.TableData
88
import org.jetbrains.kotlinx.ggdsl.letsplot.internal.MERGED_GROUPS
99
import kotlin.reflect.typeOf
10-
import kotlin.time.Duration.Companion.nanoseconds
1110

1211
internal fun LazyGroupedDataInterface.mergedKeys(): List<String> = buildList {
1312
val map = this@mergedKeys.origin.nameToValues
@@ -33,11 +32,7 @@ internal object DateTimeMaster {
3332
(it as LocalDateTime).toInstant(TimeZone.currentSystemDefault())
3433
}
3534
typeOf<LocalTime>() -> values.map {
36-
Clock.System.now().toLocalDateTime(
37-
TimeZone.currentSystemDefault()
38-
).date.atStartOfDayIn(TimeZone.currentSystemDefault()).plus(
39-
(it as LocalTime).toNanosecondOfDay().nanoseconds
40-
)
35+
(it as LocalTime).toMillisecondOfDay()
4136
}
4237
else -> values
4338
}

ggdsl-lets-plot/src/main/kotlin/org/jetbrains/kotlinx/ggdsl/letsplot/translator/scaleWrap.kt

Lines changed: 76 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import jetbrains.datalore.plot.base.Aes
44
import kotlinx.datetime.Instant
55
import kotlinx.datetime.LocalDate
66
import kotlinx.datetime.LocalDateTime
7+
import kotlinx.datetime.LocalTime
78
import org.jetbrains.kotlinx.ggdsl.ir.aes.AesName
89
import org.jetbrains.kotlinx.ggdsl.ir.scale.*
910
import org.jetbrains.kotlinx.ggdsl.letsplot.internal.*
@@ -22,6 +23,10 @@ internal val dateTimeTypes = setOf(
2223
typeOf<Instant>(), typeOf<LocalDateTime>(), typeOf<LocalDate>()
2324
)
2425

26+
internal val timeTypes = setOf(
27+
typeOf<LocalTime>(),
28+
)
29+
2530
/**
2631
* TODO datetime
2732
*/
@@ -92,42 +97,58 @@ internal fun Scale.wrap(
9297

9398
is PositionalContinuousScale<*> -> {
9499
when (aesName) {
95-
X -> if (domainType !in dateTimeTypes) {
96-
scaleXContinuous(
100+
X -> if (domainType in dateTimeTypes) {
101+
scaleXDateTime(
97102
limits = limits.wrap(),
98103
name = name,
99-
breaks = breaks?.values?.map { it as Number }, // TODO() }
104+
breaks = breaks?.values,
100105
labels = labels,
101-
trans = (transform as? Transformation)?.name,
102106
format = format
103107
)
104-
} else {
105-
scaleXDateTime(
108+
} else if (domainType in timeTypes) {
109+
scaleXTime(
106110
limits = limits.wrap(),
107111
name = name,
108112
breaks = breaks?.values,
109113
labels = labels,
110-
format = format
114+
// format = format
111115
)
112-
}
113-
114-
Y -> if (domainType !in dateTimeTypes) {
115-
scaleYContinuous(
116+
} else {
117+
scaleXContinuous(
116118
limits = limits.wrap(),
117119
name = name,
118120
breaks = breaks?.values?.map { it as Number }, // TODO() }
119121
labels = labels,
120122
trans = (transform as? Transformation)?.name,
121123
format = format
122124
)
123-
} else {
125+
}
126+
127+
Y -> if (domainType in dateTimeTypes) {
124128
scaleYDateTime(
125129
limits = limits.wrap(),
126130
name = name,
127131
breaks = breaks?.values,
128132
labels = labels,
129133
format = format
130134
)
135+
} else if (domainType in timeTypes) {
136+
scaleYTime(
137+
limits = limits.wrap(),
138+
name = name,
139+
breaks = breaks?.values,
140+
labels = labels,
141+
// format = format
142+
)
143+
} else {
144+
scaleYContinuous(
145+
limits = limits.wrap(),
146+
name = name,
147+
breaks = breaks?.values?.map { it as Number }, // TODO() }
148+
labels = labels,
149+
trans = (transform as? Transformation)?.name,
150+
format = format
151+
)
131152
}
132153

133154
else -> TODO()
@@ -165,15 +186,17 @@ internal fun Scale.wrap(
165186
when (this) {
166187
is NonPositionalCategoricalScale<*, *> -> {
167188
when (aesName) {
168-
SIZE -> if (rangeValues != null) {scaleSizeManual(
169-
values = rangeValues!!.values.map { it as Number },
170-
limits = domainCategories?.values,
171-
name = name,
172-
breaks = breaks?.values,
173-
labels = labels,
174-
guide = legendType,
175-
format = format
176-
)} else {
189+
SIZE -> if (rangeValues != null) {
190+
scaleSizeManual(
191+
values = rangeValues!!.values.map { it as Number },
192+
limits = domainCategories?.values,
193+
name = name,
194+
breaks = breaks?.values,
195+
labels = labels,
196+
guide = legendType,
197+
format = format
198+
)
199+
} else {
177200
org.jetbrains.letsPlot.intern.Scale(
178201
Aes.SIZE,
179202
limits = domainCategories?.values,
@@ -231,15 +254,17 @@ internal fun Scale.wrap(
231254
}
232255
}
233256
// TODO
234-
ALPHA -> if (rangeValues != null) { scaleAlphaManual(
235-
limits = domainCategories?.values,
236-
values = rangeValues!!.values.map { it as Double },
237-
name = name,
238-
breaks = breaks?.values,
239-
labels = labels,
240-
guide = legendType,
241-
format = format
242-
)} else {
257+
ALPHA -> if (rangeValues != null) {
258+
scaleAlphaManual(
259+
limits = domainCategories?.values,
260+
values = rangeValues!!.values.map { it as Double },
261+
name = name,
262+
breaks = breaks?.values,
263+
labels = labels,
264+
guide = legendType,
265+
format = format
266+
)
267+
} else {
243268
org.jetbrains.letsPlot.intern.Scale(
244269
Aes.ALPHA,
245270
limits = domainCategories?.values,
@@ -588,6 +613,27 @@ internal fun Scale.wrap(
588613
format = format
589614
)
590615

616+
else -> TODO()
617+
}
618+
} else if (domainType in timeTypes) {
619+
return when (aesName) {
620+
X -> scaleXTime(
621+
// limits = limits.toLP(),
622+
name = name,
623+
breaks = breaks?.values?.map { it as Number }, // TODO() }
624+
labels = labels,
625+
// trans = (transform as? Transformation)?.name,
626+
// format = format
627+
)
628+
629+
Y -> scaleYTime(
630+
//limits = categories,
631+
name = name,
632+
breaks = breaks?.values,
633+
labels = labels,
634+
// format = format
635+
)
636+
591637
else -> TODO()
592638
}
593639
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
kotlin.code.style=official
22
kotlin.jupyter.add.scanner=true
3-
version = 0.3.0
3+
version = 0.3.1
44

55
# Koltin
66
systemProp.kotlin_version=1.8.0

0 commit comments

Comments
 (0)