You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by jo...@apache.org on 2021/05/21 14:11:30 UTC

[isis] 02/04: Visualization for layout.xml

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

joergrade pushed a commit to branch ISIS-2505_Catch_Up_With_Demo_Examples
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 1015b376206418a4aeeef055b4daed577f912783
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Wed May 12 13:01:08 2021 +0200

    Visualization for layout.xml
---
 .../isis/client/kroviz/ui/diagram/LayoutDiagram.kt | 40 ++++++++++++----------
 .../isis/client/kroviz/ui/dialog/EventLogDetail.kt |  7 ++--
 .../client/kroviz/ui/kv/override/RoTabPanel.kt     |  6 ++--
 3 files changed, 28 insertions(+), 25 deletions(-)

diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LayoutDiagram.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LayoutDiagram.kt
index 201d281..3ca9752 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LayoutDiagram.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LayoutDiagram.kt
@@ -18,9 +18,9 @@
  */
 package org.apache.isis.client.kroviz.ui.diagram
 
-import org.apache.isis.client.kroviz.layout.ColsLt
-import org.apache.isis.client.kroviz.layout.Layout
-import org.apache.isis.client.kroviz.layout.RowLt
+import org.apache.isis.client.kroviz.to.bs3.Col
+import org.apache.isis.client.kroviz.to.bs3.Grid
+import org.apache.isis.client.kroviz.to.bs3.Row
 
 object LayoutDiagram {
 
@@ -33,33 +33,35 @@ object LayoutDiagram {
             "}\n" +
             "@endsalt"
 
-    fun build(layout: Layout): String {
+    fun build(grid: Grid): String {
         var pumlCode = "@startsalt\n{#\n"
-        layout.row.forEach {
+        grid.rows.forEach {
             pumlCode += buildRow(it)
         }
         return pumlCode + "}\n@endsalt"
     }
 
-    private fun buildRow(row: RowLt): String {
+    val blue = "<color:Blue>"
+    val green = "<color:Green>"
+    private fun buildRow(row: Row): String {
         var s = ""
-        row.cols.forEach {
-            s += buildCol(it)
+        row.colList.forEachIndexed() { index, it ->
+            if (index % 2 == 0)
+                s += buildCol(it, blue)
+            else
+                s += buildCol(it, green)
         }
-        return s
+        s = s.dropLast(1)
+        return s + "\n"
     }
 
-    private fun buildCol(cols: ColsLt): String {
-        var s = ". "
-        val span: Int? = cols.col.span
-        if (span == null) {
-            s += "| . "
-        } else {
-            for (i in 1..span) {
-                s += "| * "
-            }
+    private fun buildCol(col: Col, colorCode: String): String {
+        var s = ""
+        val span: Int = col.span
+        repeat(span) {
+            s += "$colorCode C |"
         }
-        return s + "\n"
+        return s
     }
 
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt
index 267553a..a9d445b 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventLogDetail.kt
@@ -19,8 +19,8 @@
 package org.apache.isis.client.kroviz.ui.dialog
 
 import org.apache.isis.client.kroviz.core.event.LogEntry
-import org.apache.isis.client.kroviz.layout.Layout
 import org.apache.isis.client.kroviz.to.ValueType
+import org.apache.isis.client.kroviz.to.bs3.Grid
 import org.apache.isis.client.kroviz.ui.core.Constants
 import org.apache.isis.client.kroviz.ui.core.FormItem
 import org.apache.isis.client.kroviz.ui.core.RoDialog
@@ -62,12 +62,15 @@ class EventLogDetail(val logEntry: LogEntry) : Command() {
         val str = logEntry.response
         val pumlCode = when {
             str.startsWith("<") -> {
-                LayoutDiagram.build(logEntry.obj as Layout)
+                val grid = logEntry.obj as Grid
+                LayoutDiagram.build(grid)
             }
             str.startsWith("{") ->
                 JsonDiagram.build(str)
             else -> "{}"
         }
+        console.log("[ELD.execute]")
+        console.log(pumlCode)
         DiagramDialog("Response Diagram", pumlCode).open()
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoTabPanel.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoTabPanel.kt
index 7a44259..9ca5846 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoTabPanel.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoTabPanel.kt
@@ -21,7 +21,6 @@ package org.apache.isis.client.kroviz.ui.kv.override
 /**
  * Copied from TabPanel in order to:
  * * add IconMenu to (Ro)Tab
- * * recreate svg from LogEntry on focus
  */
 
 import com.github.snabbdom.VNode
@@ -31,8 +30,8 @@ import io.kvision.panel.VPanel
 import io.kvision.routing.RoutingManager
 import io.kvision.state.ObservableState
 import io.kvision.state.bind
+import io.kvision.utils.auto
 import io.kvision.utils.obj
-import io.kvision.utils.perc
 import io.kvision.utils.set
 import org.apache.isis.client.kroviz.ui.core.RoView
 
@@ -117,7 +116,7 @@ open class RoTabPanel(
         }
 
     init {
-        width = 100.perc
+        width = auto
         marginTop = CssSize(40, UNIT.px)
         when (tabPosition) {
             TabPosition.TOP -> {
@@ -146,7 +145,6 @@ open class RoTabPanel(
         return render("div", childrenVNodes())
     }
 
-
     private fun calculateSideClasses(): Pair<String, String> {
         return when (sideTabSize) {
             SideTabSize.SIZE_1 -> Pair("col-sm-1", "col-sm-11")