This is an automated email from the ASF dual-hosted git repository.
joergrade pushed a commit to branch spring6-kroviz
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/spring6-kroviz by this push:
new 4c416902a7 CAUSEWAY-3264 vega diagram shown in second row of table
4c416902a7 is described below
commit 4c416902a70aa7d6d8a50dd20b809b438ec5936f
Author: Jörg Rade <[email protected]>
AuthorDate: Wed Nov 8 20:35:55 2023 +0100
CAUSEWAY-3264 vega diagram shown in second row of table
---
.../client/kroviz/ui/core/ColumnFactory.kt | 22 +++++-----------------
.../client/kroviz/ui/core/FormPanelFactory.kt | 20 ++++++--------------
.../causeway/client/kroviz/ui/core/RoMenuBar.kt | 3 ++-
.../causeway/client/kroviz/ui/dialog/VegaPanel.kt | 4 +---
4 files changed, 14 insertions(+), 35 deletions(-)
diff --git
a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/ColumnFactory.kt
b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/ColumnFactory.kt
index 4268d572ae..93db8f833c 100644
---
a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/ColumnFactory.kt
+++
b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/ColumnFactory.kt
@@ -19,7 +19,6 @@
package org.apache.causeway.client.kroviz.ui.core
import io.kvision.core.Component
-import io.kvision.panel.VPanel
import io.kvision.tabulator.Align
import io.kvision.tabulator.ColumnDefinition
import io.kvision.tabulator.Editor
@@ -31,9 +30,8 @@ import org.apache.causeway.client.kroviz.core.model.Exposer
import org.apache.causeway.client.kroviz.core.model.PropertyDetails
import org.apache.causeway.client.kroviz.to.TObject
import org.apache.causeway.client.kroviz.to.ValueType
-import org.apache.causeway.client.kroviz.to.Vega5
+import org.apache.causeway.client.kroviz.ui.dialog.VegaPanel
import org.apache.causeway.client.kroviz.ui.menu.DynamicMenuBuilder
-import org.apache.causeway.client.kroviz.utils.js.Vega
/**
* Create ColumnDefinitions for Tabulator tables
@@ -143,7 +141,7 @@ class ColumnFactory {
title = it.name,
field = it.id,
width = (it.typicalLength * 8).toString(),
- formatterComponentFunction = { cellComponent:
Tabulator.CellComponent, _: (callback: () -> Unit) -> Unit, nothing: Nothing ->
+ formatterComponentFunction = { cellComponent:
Tabulator.CellComponent, _: (callback: () -> Unit) -> Unit, _: Nothing ->
buildDiagramPanel(cellComponent)
}
)
@@ -152,19 +150,9 @@ class ColumnFactory {
private fun buildDiagramPanel(cellComponent: Tabulator.CellComponent):
Component {
console.log("[CF_buildDiagramPanel]")
console.log(cellComponent)
- val panel = VPanel()
- panel.addAfterInsertHook {
- val json = cellComponent.getValue().unsafeCast<String>()
- console.log(json)
- val spec = JSON.parse<Vega5>(json)
- val view = Vega.View(Vega.parse(spec), obj {
- this.renderer = "canvas"
- //this.container = getElement()
- this.hover = true
- })
- view.runAsync()
- }
- return panel
+ val json = cellComponent.getValue().unsafeCast<String>()
+ console.log(json)
+ return VegaPanel(json)
}
private fun buildLink(): ColumnDefinition<dynamic> {
diff --git
a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/FormPanelFactory.kt
b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/FormPanelFactory.kt
index 4024243000..f27d9ebe94 100644
---
a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/FormPanelFactory.kt
+++
b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/FormPanelFactory.kt
@@ -36,6 +36,7 @@ import io.kvision.html.Button
import io.kvision.html.Div
import io.kvision.html.Iframe
import io.kvision.html.Image
+import io.kvision.panel.SimplePanel
import io.kvision.panel.VPanel
import io.kvision.panel.vPanel
import io.kvision.utils.auto
@@ -45,6 +46,7 @@ import io.kvision.utils.vh
import org.apache.causeway.client.kroviz.to.ValueType
import org.apache.causeway.client.kroviz.to.Vega5
import org.apache.causeway.client.kroviz.ui.dialog.Controller
+import org.apache.causeway.client.kroviz.ui.dialog.VegaPanel
import org.apache.causeway.client.kroviz.ui.panel.SvgPanel
import org.apache.causeway.client.kroviz.utils.DateHelper
import org.apache.causeway.client.kroviz.utils.IconManager
@@ -77,7 +79,7 @@ class FormPanelFactory(items: List<FormItem>) : VPanel() {
ValueType.SVG_INLINE -> add(createInline(fi))
ValueType.SVG_MAPPED -> add(createSvgMap(fi))
ValueType.BUTTON -> add(createButton(fi))
- ValueType.CANVAS -> add(createCanvas(fi))
+ ValueType.CANVAS -> add(createVega(fi))
else -> {
}
}
@@ -248,20 +250,10 @@ class FormPanelFactory(items: List<FormItem>) : VPanel() {
return item
}
- private fun createCanvas(fi: FormItem): VPanel {
+ private fun createVega(fi: FormItem): SimplePanel {
console.log("[FPF_createCanvas]")
- val panel = VPanel()
- panel.addAfterInsertHook {
- val json = fi.content as String
- val specFromClass = JSON.parse<Vega5>(json)
-// console.log(specFromClass)
- val view = Vega.View(Vega.parse(specFromClass), obj {
- this.renderer = "canvas"
- this.container = getElement()
- this.hover = true
- })
- view.runAsync()
- }
+ val json = fi.content as String
+ val panel = VegaPanel(json)
console.log(panel)
return panel
}
diff --git
a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/RoMenuBar.kt
b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/RoMenuBar.kt
index 130ccfb1d0..0cbb2b023b 100644
---
a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/RoMenuBar.kt
+++
b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/RoMenuBar.kt
@@ -35,6 +35,7 @@ import org.apache.causeway.client.kroviz.core.Session
import org.apache.causeway.client.kroviz.core.aggregator.ActionDispatcher
import org.apache.causeway.client.kroviz.core.event.ResourceProxy
import org.apache.causeway.client.kroviz.to.Menubars
+import org.apache.causeway.client.kroviz.to.VEGA_SAMPLE
import org.apache.causeway.client.kroviz.ui.dialog.*
import org.apache.causeway.client.kroviz.ui.menu.DropDownMenuBuilder
import org.apache.causeway.client.kroviz.ui.panel.GeoMap
@@ -204,7 +205,7 @@ class RoMenuBar : SimplePanel() {
val vegaTitle = "Vega Sample"
subMenu.add(
- buildMenuEntry(vegaTitle, "Image", { ViewManager.add(vegaTitle,
VegaPanel()) })
+ buildMenuEntry(vegaTitle, "Image", { ViewManager.add(vegaTitle,
VegaPanel(VEGA_SAMPLE.str)) })
)
mainMenu.add(subMenu)
diff --git
a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/dialog/VegaPanel.kt
b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/dialog/VegaPanel.kt
index 1aed9ffda5..99f6dd528e 100644
---
a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/dialog/VegaPanel.kt
+++
b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/dialog/VegaPanel.kt
@@ -20,17 +20,15 @@ package org.apache.causeway.client.kroviz.ui.dialog
import io.kvision.panel.SimplePanel
import io.kvision.utils.obj
-import org.apache.causeway.client.kroviz.to.VEGA_SAMPLE
import org.apache.causeway.client.kroviz.to.Vega5
import org.apache.causeway.client.kroviz.utils.js.Vega
-class VegaPanel : SimplePanel() {
+class VegaPanel(val json: String) : SimplePanel() {
// https://vega.github.io/vega/examples/
init {
this.addAfterInsertHook {
- val json = VEGA_SAMPLE.str
val specFromClass = JSON.parse<Vega5>(json)
console.log("[VP#init]")
console.log(specFromClass)