You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by jo...@apache.org on 2023/06/15 20:00:42 UTC

[causeway] branch kvision-6-upgrade updated: CAUSEWAY-3264 icon on Exhibit set

This is an automated email from the ASF dual-hosted git repository.

joergrade pushed a commit to branch kvision-6-upgrade
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/kvision-6-upgrade by this push:
     new 2057f3944d CAUSEWAY-3264 icon on Exhibit set
2057f3944d is described below

commit 2057f3944dc8b8af3447d4d2ffdd63d2ced7a313
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Thu Jun 15 22:00:24 2023 +0200

    CAUSEWAY-3264 icon on Exhibit set
---
 incubator/clients/kroviz/build.gradle.kts           |  4 +++-
 .../kroviz/core/event/ResourceSpecification.kt      |  2 ++
 .../client/kroviz/core/model/CollectionDM.kt        |  9 +++++++--
 .../kroviz/core/model/DisplayModelException.kt      |  4 ++++
 .../causeway/client/kroviz/core/model/ObjectDM.kt   | 14 +++++++++++---
 .../client/kroviz/core/model/ObjectLayout.kt        |  1 +
 .../causeway/client/kroviz/ui/builder/ColBuilder.kt | 21 ++++++++++++++-------
 .../causeway/client/kroviz/ui/core/ColumnFactory.kt |  5 ++---
 .../client/kroviz/ui/core/FormPanelFactory.kt       |  2 --
 .../causeway/client/kroviz/ui/core/RoTable.kt       |  7 ++++---
 10 files changed, 48 insertions(+), 21 deletions(-)

diff --git a/incubator/clients/kroviz/build.gradle.kts b/incubator/clients/kroviz/build.gradle.kts
index f7e7613a7f..48271d6909 100644
--- a/incubator/clients/kroviz/build.gradle.kts
+++ b/incubator/clients/kroviz/build.gradle.kts
@@ -142,4 +142,6 @@ afterEvaluate {
 }
 dependencies {
     implementation(kotlin("stdlib-js"))
-}
\ No newline at end of file
+//    classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}")
+//    implementation(kotlin("org.jetbrains.kotlin:kotlin-dce-js:$kotlinVersion"))
+}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/event/ResourceSpecification.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/event/ResourceSpecification.kt
index 63130ef8e4..b0102b16d3 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/event/ResourceSpecification.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/event/ResourceSpecification.kt
@@ -18,10 +18,12 @@
  */
 package org.apache.causeway.client.kroviz.core.event
 
+import kotlinx.serialization.Serializable
 import org.apache.causeway.client.kroviz.ui.core.Constants
 import org.apache.causeway.client.kroviz.utils.StringUtils
 import org.apache.causeway.client.kroviz.utils.UrlUtils
 
+@Serializable
 class ResourceSpecification(
     val url: String,
     val subType: String? = Constants.subTypeJson,
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/CollectionDM.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/CollectionDM.kt
index ebf19cd706..1ed8ea6461 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/CollectionDM.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/CollectionDM.kt
@@ -67,14 +67,19 @@ class CollectionDM(override var title: String) : DisplayModelWithLayout() {
     }
 
     override fun readyToRender(): Boolean {
-        return collectionLayout.readyToRender()
+        val result = collectionLayout.readyToRender() && data.size > 0
+        if (result) {
+            console.log("[CDM_readyToRender]")
+            console.log(this)
+        }
+        return result
     }
 
     override fun addData(obj: TransferObject) {
         rawData.add(obj)
         val tObj = obj as TObject
         val exo = Exposer(tObj)
-        data.add(exo)
+        data.add(exo.exhibit.asDynamic())
     }
 
     override fun reset() {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/DisplayModelException.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/DisplayModelException.kt
new file mode 100644
index 0000000000..5039406c75
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/DisplayModelException.kt
@@ -0,0 +1,4 @@
+package org.apache.causeway.client.kroviz.core.model
+
+class DisplayModelException(message: String, cause: Throwable) : RuntimeException() {
+}
\ No newline at end of file
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectDM.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectDM.kt
index aeb990a22e..f9384a477f 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectDM.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectDM.kt
@@ -45,8 +45,12 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() {
     }
 
     fun hasCollectionModels(): Boolean {
-        console.log("[ODM_hasCollectionModels]")
-        console.log(collectionModelList)
+        console.log("[ODM_hasCollectionModels] ${collectionModelList.isNotEmpty()}")
+        if (collectionModelList.isNotEmpty()) {
+            val firstCM = collectionModelList.get(0)
+            console.log("[ODM_hasCollectionModels] data:")
+            console.log(firstCM.data)
+        }
         return collectionModelList.isNotEmpty()
     }
 
@@ -59,19 +63,23 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() {
     }
 
     override fun readyToRender(): Boolean {
-        return when {
+        val result = when {
             data == null -> false
             isRendered -> false
             layout == null -> false
             else -> areCollectionsReadyToRender()
         }
+        return result
     }
 
     private fun areCollectionsReadyToRender(): Boolean {
+        if (collectionModelList.size < 1) return false
         collectionModelList.forEach {
             if (!it.readyToRender())
                 return false
         }
+        console.log("[ODM_areCollectionsReadyToRender] (true)")
+        console.log(collectionModelList)
         return true
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectLayout.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectLayout.kt
index 5c0ca4d4d4..e9a825ab21 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectLayout.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectLayout.kt
@@ -34,6 +34,7 @@ class ObjectLayout(val grid: GridBs, val aggregator: ObjectAggregator, val refer
     }
 
     override fun readyToRender(): Boolean {
+        console.log("[OL_readyToRender] constant:true")
         return true //TODO remove from protocol ?
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/builder/ColBuilder.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/builder/ColBuilder.kt
index 71f0548590..c750ceeb1b 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/builder/ColBuilder.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/builder/ColBuilder.kt
@@ -23,6 +23,7 @@ import io.kvision.panel.FieldsetPanel
 import io.kvision.panel.FlexPanel
 import io.kvision.panel.HPanel
 import io.kvision.panel.SimplePanel
+import org.apache.causeway.client.kroviz.core.model.DisplayModelException
 import org.apache.causeway.client.kroviz.to.TObject
 import org.apache.causeway.client.kroviz.to.bs.ColBs
 import org.apache.causeway.client.kroviz.to.bs.CollectionBs
@@ -83,19 +84,23 @@ class ColBuilder(
     }
 
     private fun addCollections() {
-        console.log("[CB_addCollections]")
-        if (dsp.displayModel.hasCollectionModels()) {
-            col.collectionList.forEach {
-                console.log(it)
-                buildTableAndWrapInFsPanel(it)
-            }
+        col.collectionList.forEach {
+            console.log(it)
+            buildTableAndWrapInFsPanel(it)
         }
     }
 
     private fun buildTableAndWrapInFsPanel(it: CollectionBs) {
         val objectDM = dsp.displayModel
+        console.log("[CB_buildTableAndWrapInFsPanel] ODM")
+        console.log(objectDM)
         try {
+            console.log("[CB_buildTableAndWrapInFsPanel] CollectionBs/id")
+            console.log(it)
+            console.log(it.id)
             val cdm = objectDM.getCollectionDisplayModelFor(it.id)!!
+            console.log("[CB_buildTableAndWrapInFsPanel] CDM")
+            console.log(cdm)
             val fsPanel = FieldsetPanel(legend = cdm.getTitle())
             val table = RoTable(cdm)
             console.log(table)
@@ -103,7 +108,9 @@ class ColBuilder(
             panel.add(fsPanel)
             cdm.isRendered = true
         } catch (npe: NullPointerException) {
-            return
+            console.log("[CB_buildTableAndWrapInFsPanel] NPE caught")
+            val dme = DisplayModelException(message = "collectionDisplayModel not found", cause = npe)
+            throw dme
         }
     }
 
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 0d8596962d..388405d033 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
@@ -81,11 +81,10 @@ class ColumnFactory {
     }
 
     private fun exposeIcons(displayCollection: CollectionDM) {
-        val model = displayCollection.data
         val icon = displayCollection.icon
-        model.forEach { dynamic ->
+        displayCollection.data.forEach { exhibit ->
             if (icon != null) {
-                dynamic.setIcon(icon)
+                exhibit.asDynamic()["icon"] = icon
             }
         }
     }
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 3a64dfee54..4024243000 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
@@ -60,8 +60,6 @@ class FormPanelFactory(items: List<FormItem>) : VPanel() {
             height = auto
             margin = 10.px
             for (fi: FormItem in items) {
-                console.log("[FPF_init]")
-                console.log(fi.type)
                 when (fi.type) {
                     ValueType.TEXT -> add(createText(fi))
                     ValueType.PASSWORD -> add(createPassword(fi))
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/RoTable.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/RoTable.kt
index b07e6df5e0..ab93e22668 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/RoTable.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/RoTable.kt
@@ -44,9 +44,9 @@ class RoTable(displayCollection: CollectionDM) : SimplePanel() {
     init {
         title = StringUtils.extractTitle(displayCollection.title)
         width = CssSize(100, UNIT.perc)
-        val model = mutableListOf<Exhibit>()
+        val model = mutableListOf<dynamic>()
         displayCollection.data.forEach {
-            model.add(it.getWithDelegateProperties())
+            model.add(it.asDynamic())
         }
         val columns = ColumnFactory().buildColumns(
             displayCollection
@@ -62,7 +62,8 @@ class RoTable(displayCollection: CollectionDM) : SimplePanel() {
 
         val tableTypes = setOf(TableType.STRIPED, TableType.HOVER)
 
-        console.log("[RT_before] tabulator()")
+        console.log("[RT_before] tabulator(), model ->")
+        console.log(model)
         val tabulator = createTabulator(model, options, tableTypes)
         tabulator.setEventListener<Tabulator<dynamic>> {
             cellClickTabulator = {