Skip to content

Commit 03357b1

Browse files
authored
Merge pull request #519 from Kotlin/better-static-tables
Better static tables
2 parents 24e0136 + 47b397e commit 03357b1

File tree

11 files changed

+116042
-2196
lines changed

11 files changed

+116042
-2196
lines changed

core/generated-sources/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/html.kt

Lines changed: 251 additions & 53 deletions
Large diffs are not rendered by default.

core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/rendering/RenderingTests.kt

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import io.kotest.matchers.shouldBe
44
import io.kotest.matchers.string.shouldContain
55
import io.kotest.matchers.string.shouldNotContain
66
import org.jetbrains.kotlinx.dataframe.api.add
7+
import org.jetbrains.kotlinx.dataframe.api.asColumnGroup
78
import org.jetbrains.kotlinx.dataframe.api.columnOf
89
import org.jetbrains.kotlinx.dataframe.api.dataFrameOf
10+
import org.jetbrains.kotlinx.dataframe.api.emptyDataFrame
911
import org.jetbrains.kotlinx.dataframe.api.group
1012
import org.jetbrains.kotlinx.dataframe.api.into
1113
import org.jetbrains.kotlinx.dataframe.api.move
@@ -14,19 +16,26 @@ import org.jetbrains.kotlinx.dataframe.api.toDataFrame
1416
import org.jetbrains.kotlinx.dataframe.io.DisplayConfiguration
1517
import org.jetbrains.kotlinx.dataframe.io.escapeHTML
1618
import org.jetbrains.kotlinx.dataframe.io.formatter
19+
import org.jetbrains.kotlinx.dataframe.io.maxDepth
20+
import org.jetbrains.kotlinx.dataframe.io.maxWidth
1721
import org.jetbrains.kotlinx.dataframe.io.print
1822
import org.jetbrains.kotlinx.dataframe.io.renderToString
1923
import org.jetbrains.kotlinx.dataframe.io.renderToStringTable
2024
import org.jetbrains.kotlinx.dataframe.io.toHTML
2125
import org.jetbrains.kotlinx.dataframe.jupyter.DefaultCellRenderer
2226
import org.jetbrains.kotlinx.dataframe.jupyter.RenderedContent
27+
import org.jetbrains.kotlinx.dataframe.samples.api.TestBase
28+
import org.jetbrains.kotlinx.dataframe.samples.api.firstName
29+
import org.jetbrains.kotlinx.dataframe.samples.api.lastName
30+
import org.jetbrains.kotlinx.dataframe.samples.api.name
31+
import org.jetbrains.kotlinx.dataframe.samples.api.secondName
2332
import org.jsoup.Jsoup
2433
import org.junit.Test
2534
import java.net.URL
2635
import java.text.DecimalFormatSymbols
2736
import kotlin.reflect.typeOf
2837

29-
class RenderingTests {
38+
class RenderingTests : TestBase() {
3039

3140
@Test
3241
fun `render row with unicode values as table`() {
@@ -131,18 +140,38 @@ class RenderingTests {
131140
val df = dataFrameOf("a", "b")(listOf(1, 1), listOf(2, 4))
132141
val actualHtml = df.toHTML()
133142

134-
actualHtml.body shouldContain """
143+
val body = actualHtml.body.lines().joinToString("") { it.trimStart() }
144+
145+
body shouldContain """
135146
<thead>
136147
<tr>
137-
<th>a</th><th>b</th>
148+
<th class="bottomBorder" style="text-align:left">a</th>
149+
<th class="bottomBorder" style="text-align:left">b</th>
138150
</tr>
139151
</thead>
140152
<tbody>
141153
<tr>
142-
<td>[1, 1]</td><td>[2, 4]</td>
154+
<td style="vertical-align:top">[1, 1]</td>
155+
<td style="vertical-align:top">[2, 4]</td>
143156
</tr>
144157
</tbody>
145158
</table>
146159
""".trimIndent().replace("\n", "")
147160
}
161+
162+
@Test
163+
fun `max depth`() {
164+
df.maxDepth() shouldBe 1
165+
dfGroup.maxDepth() shouldBe 2
166+
emptyDataFrame<Any>().maxDepth() shouldBe 0
167+
}
168+
169+
@Test
170+
fun `max width`() {
171+
dfGroup.asColumnGroup("").maxWidth() shouldBe 8
172+
dfGroup.name.maxWidth() shouldBe 4
173+
dfGroup.name.firstName.maxWidth() shouldBe 3
174+
dfGroup.name.lastName.maxWidth() shouldBe 1
175+
dfGroup.name.firstName.secondName.maxWidth() shouldBe 1
176+
}
148177
}

0 commit comments

Comments
 (0)