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/09/28 16:31:25 UTC

[isis] branch ISIS-2872 updated: ISIS-2872 Upgrade Kotlin/KVision Dependencies (Burger menu works again, Connect not yet)

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

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


The following commit(s) were added to refs/heads/ISIS-2872 by this push:
     new 82d036d  ISIS-2872 Upgrade Kotlin/KVision Dependencies (Burger menu works again, Connect not yet)
82d036d is described below

commit 82d036de295259efff43ba70fe293fb8544d5f51
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Tue Sep 28 18:29:20 2021 +0200

    ISIS-2872 Upgrade Kotlin/KVision Dependencies (Burger menu works again, Connect not yet)
---
 incubator/clients/kroviz/build.gradle.kts          |  5 ++-
 incubator/clients/kroviz/gradle.properties         |  4 +-
 .../kotlin/org/apache/isis/client/kroviz/App.kt    | 18 +++-----
 .../isis/client/kroviz/core/event/LogEntry.kt      |  2 +-
 .../client/kroviz/ui/chart/SampleChartModel.kt     | 50 +++++++++++-----------
 .../isis/client/kroviz/ui/core/ColumnFactory.kt    |  2 +-
 .../isis/client/kroviz/ui/core/MenuFactory.kt      | 10 ++---
 .../apache/isis/client/kroviz/ui/core/RoMenuBar.kt |  7 ++-
 .../isis/client/kroviz/ui/core/RoStatusBar.kt      |  2 +-
 .../apache/isis/client/kroviz/ui/core/RoTable.kt   | 10 +++--
 .../kroviz/ui/kv/override/RoManagerBootstrap.kt    |  5 ++-
 .../isis/client/kroviz/ui/kv/override/RoTab.kt     |  1 +
 .../client/kroviz/ui/kv/override/RoTabPanel.kt     |  1 +
 .../isis/client/kroviz/ui/kv/override/RoWindow.kt  |  7 ++-
 .../isis/client/kroviz/ui/panel/ImageSample.kt     |  1 -
 .../apache/isis/client/kroviz/utils/IconManager.kt | 10 ++---
 16 files changed, 70 insertions(+), 65 deletions(-)

diff --git a/incubator/clients/kroviz/build.gradle.kts b/incubator/clients/kroviz/build.gradle.kts
index 5652244..0c3ac2f 100644
--- a/incubator/clients/kroviz/build.gradle.kts
+++ b/incubator/clients/kroviz/build.gradle.kts
@@ -16,7 +16,6 @@
 //  specific language governing permissions and limitations
 //  under the License.
 //
-import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack
 import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
 
 plugins {
@@ -30,6 +29,10 @@ plugins {
 version = "2.0.0-SNAPSHOT"
 group = "org.apache.isis.client"
 
+kotlin.sourceSets.all {
+    languageSettings.useExperimentalAnnotation("kotlin.RequiresOptIn")
+}
+
 repositories {
     mavenCentral()
     jcenter()
diff --git a/incubator/clients/kroviz/gradle.properties b/incubator/clients/kroviz/gradle.properties
index 2ecbefd..5df73f1 100644
--- a/incubator/clients/kroviz/gradle.properties
+++ b/incubator/clients/kroviz/gradle.properties
@@ -21,5 +21,5 @@ javaVersion=1.8
 systemProp.kotlinVersion=1.5.31
 serializationVersion=1.2.2
 #Dependencies
-systemProp.kvisionVersion=5.1.1
-kotlin.js.compiler=ir
+systemProp.kvisionVersion=5.2.0
+kotlin.js.compiler=legacy
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/App.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/App.kt
index e14949c..c452081 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/App.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/App.kt
@@ -19,18 +19,10 @@
 package org.apache.isis.client.kroviz
 
 import io.kvision.*
-import org.apache.isis.client.kroviz.ui.core.RoApp
 import io.kvision.pace.Pace
-import io.kvision.panel.ContainerType
 import io.kvision.panel.VPanel
 import io.kvision.panel.root
-import io.kvision.panel.vPanel
-import io.kvision.utils.px
-import kotlinx.browser.window
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.asCoroutineDispatcher
-
-val AppScope = CoroutineScope(window.asCoroutineDispatcher())
+import org.apache.isis.client.kroviz.ui.core.RoApp
 
 class App : Application() {
 
@@ -40,7 +32,7 @@ class App : Application() {
     }
 
     override fun start() {
-        val r = root("kroviz")
+        val r = root("kroviz", addRow = true)
         val v = VPanel()
         v.add(RoApp)
         r.add(v)
@@ -61,10 +53,12 @@ fun main() {
         BootstrapSelectModule,
         BootstrapDatetimeModule,
         BootstrapSpinnerModule,
-//        BootstrapTypeaheadModule,
+        BootstrapTypeaheadModule,
         BootstrapUploadModule,
         RichTextModule,
         ChartModule,
         TabulatorModule,
-        CoreModule)
+        CoreModule,
+        panelsCompatibilityMode = true,
+    )
 }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt
index 6e16d20..d922f87 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/LogEntry.kt
@@ -226,7 +226,7 @@ data class LogEntry(
     }
 
     fun getAggregator(): BaseAggregator {
-        //FIXME the last aggt is not always the right one
+        //TODO the last aggt is not always the right one
         // callers need to filter  !!!
         return aggregators.last()
     }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/chart/SampleChartModel.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/chart/SampleChartModel.kt
index 517aa6e..46d1649 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/chart/SampleChartModel.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/chart/SampleChartModel.kt
@@ -18,53 +18,51 @@
  */
 package org.apache.isis.client.kroviz.ui.chart
 
-import org.apache.isis.client.kroviz.ui.chart.ChartModel
 import io.kvision.chart.DataSets
 import io.kvision.core.Color
 import io.kvision.i18n.I18n
 
-@Deprecated("simple sample")
 class SampleChartModel() : ChartModel {
 
     override var bgColorList = mutableListOf(
-            Color.hex(0xC0504D),
-            Color.hex(0xF79646),
-            Color.hex(0x9BBB59),
-            Color.hex(0x4BACC6),
-            Color.hex(0x4F81BD),
-            Color.hex(0x8064A2)
+        Color.hex(0xC0504D),
+        Color.hex(0xF79646),
+        Color.hex(0x9BBB59),
+        Color.hex(0x4BACC6),
+        Color.hex(0x4F81BD),
+        Color.hex(0x8064A2)
     )
 
     override var bgColorList2 = mutableListOf(
-            Color.hex(0xC0504D.or(0x303030)),
-            Color.hex(0xF79646.or(0x303030)),
-            Color.hex(0x9BBB59.or(0x203030)),
-            Color.hex(0x4BACC6.or(0x301010)),
-            Color.hex(0x4F81BD.or(0x101010)),
-            Color.hex(0x8064A2.or(0x303030))
+        Color.hex(0xC0504D.or(0x303030)),
+        Color.hex(0xF79646.or(0x303030)),
+        Color.hex(0x9BBB59.or(0x203030)),
+        Color.hex(0x4BACC6.or(0x301010)),
+        Color.hex(0x4F81BD.or(0x101010)),
+        Color.hex(0x8064A2.or(0x303030))
     )
 
     override var labelList = mutableListOf<String>(
-            I18n.tr("BU 6"),
-            I18n.tr("BU 5"),
-            I18n.tr("BU 4"),
-            I18n.tr("BU 3"),
-            I18n.tr("BU 2"),
-            I18n.tr("BU 1")
+        I18n.tr("BU 6"),
+        I18n.tr("BU 5"),
+        I18n.tr("BU 4"),
+        I18n.tr("BU 3"),
+        I18n.tr("BU 2"),
+        I18n.tr("BU 1")
     )
 
     override var datasetList = mutableListOf<DataSets>()
 
     override var ds1 = DataSets(
-            data = listOf(300, 727, 589, 537, 543, 574),
-            backgroundColor = bgColorList,
-            label = "initial"
+        data = listOf(300, 727, 589, 537, 543, 574),
+        backgroundColor = bgColorList,
+        label = "initial"
     )
 
     override var ds2 = DataSets(
-            data = listOf(400, 238, 553, 746, 884, 903),
-            backgroundColor = bgColorList2,
-            label = "duplicates"
+        data = listOf(400, 238, 553, 746, 884, 903),
+        backgroundColor = bgColorList2,
+        label = "duplicates"
     )
 
     init {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/ColumnFactory.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/ColumnFactory.kt
index db32c54..0c18bf5 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/ColumnFactory.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/ColumnFactory.kt
@@ -58,7 +58,7 @@ class ColumnFactory {
                 hozAlign = Align.CENTER,
                 width = "40",
                 headerSort = false,
-                clickMenu = { component: dynamic, e: dynamic ->
+                clickMenu = { component: dynamic, _: dynamic ->
                     buildObjectMenu(component)
                 }
         )
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/MenuFactory.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/MenuFactory.kt
index 445c23a..22e9cdb 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/MenuFactory.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/MenuFactory.kt
@@ -22,7 +22,6 @@ import io.kvision.core.Component
 import io.kvision.dropdown.DropDown
 import io.kvision.dropdown.separator
 import io.kvision.html.ButtonStyle
-import io.kvision.utils.set
 import org.apache.isis.client.kroviz.core.event.EventStore
 import org.apache.isis.client.kroviz.core.event.ResourceProxy
 import org.apache.isis.client.kroviz.to.Link
@@ -66,7 +65,7 @@ object MenuFactory {
         menu: Menu,
         style: ButtonStyle = ButtonStyle.LIGHT,
         withText: Boolean = true,
-        className: String = ""
+        className: String? = null
     )
             : DropDown {
         val menuTitle = menu.named
@@ -145,7 +144,7 @@ object MenuFactory {
         val actionLink: KvisionHtmlLink = ddLink(
             label = actionTitle,
             icon = IconManager.find(label),
-            classes = IconManager.findStyleFor(label)
+            className = IconManager.findStyleFor(label)
         )
         val id = "$menuTitle${Constants.actionSeparator}$actionTitle"
         actionLink.setDragDropData(Constants.stdMimeType, id)
@@ -156,7 +155,7 @@ object MenuFactory {
     private fun ddLink(
         label: String,
         icon: String? = null,
-        classes: Set<String>? = null,
+        className: String? = null,
         init: (KvisionHtmlLink.() -> Unit)? = null
     ): KvisionHtmlLink {
         val link = KvisionHtmlLink(
@@ -165,7 +164,8 @@ object MenuFactory {
             icon = icon,
             image = null,
             separator = null,
-            labelFirst = true
+            labelFirst = true,
+            className = className
         )
         link.addCssClass("dropdown-item")
         return link.apply {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoMenuBar.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoMenuBar.kt
index c8f55c6..e101836 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoMenuBar.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoMenuBar.kt
@@ -20,6 +20,7 @@ package org.apache.isis.client.kroviz.ui.core
 
 import io.kvision.core.CssSize
 import io.kvision.core.UNIT
+import io.kvision.core.style
 import io.kvision.dropdown.DropDown
 import io.kvision.html.Button
 import io.kvision.html.ButtonStyle
@@ -58,11 +59,12 @@ object RoMenuBar : SimplePanel() {
 
     private fun buildMenuEntry(label: String, iconName: String, action: dynamic): Link {
         val icon = IconManager.find(iconName)
-        return Link(label, icon).onClick { e ->
+        val link = Link(label, icon = icon, className = "dropdown-item").onClick { e ->
             val at = Point(e.pageX.toInt(), e.pageY.toInt())
             UiManager.position = at
-            action
+            action()
         }
+        return link
     }
 
     private fun buildMainMenu(): DropDown {
@@ -116,6 +118,7 @@ object RoMenuBar : SimplePanel() {
 
         console.log("[RMB.buildMainMenu]")
         console.log(mainMenu)
+        console.log(mainMenu.getChildren())
         return mainMenu
     }
 
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoStatusBar.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoStatusBar.kt
index 87b7612..4159af2 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoStatusBar.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoStatusBar.kt
@@ -37,7 +37,6 @@ import org.apache.isis.client.kroviz.utils.IconManager
 object RoStatusBar {
     val navbar = Navbar(type = NavbarType.FIXEDBOTTOM)
 
-    //FIXME    navbar.addCssClasses("status-bar")
     private val nav = Nav(rightAlign = true)
     private val userBtn: Button = buildButton("", "Me", ButtonStyle.OUTLINEWARNING)
     private val classDiagram = buildButton("", "Diagram", ButtonStyle.OUTLINEWARNING)
@@ -56,6 +55,7 @@ object RoStatusBar {
     }
 
     init {
+        navbar.addCssClass("status-bar")
         navbar.add(nav)
 //        nav.add(isisButton())
 //        nav.add(kvisionButton())
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoTable.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoTable.kt
index 564d3bd..b9c7702 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoTable.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/RoTable.kt
@@ -78,11 +78,12 @@ class RoTable(displayCollection: CollectionDM) : SimplePanel() {
         dataUpdateOnEdit: Boolean = true,
         options: TabulatorOptions<T> = TabulatorOptions(),
         types: Set<TableType> = setOf(),
-        className: String = "",
+        className: String? = null,
         init: (Tabulator<T>.() -> Unit)? = null
     ): Tabulator<T> {
         val tabulator = create(data, dataUpdateOnEdit, options, types)
-        tabulator.addCssClass(className)
+        if (className != null)
+            tabulator.addCssClass(className)
         init?.invoke(tabulator)
         this.add(tabulator)
         return tabulator
@@ -93,11 +94,12 @@ class RoTable(displayCollection: CollectionDM) : SimplePanel() {
         dataUpdateOnEdit: Boolean = true,
         options: TabulatorOptions<T> = TabulatorOptions(),
         types: Set<TableType> = setOf(),
-        className: String = "",
+        className: String? = null,
         init: (Tabulator<T>.() -> Unit)? = null
     ): Tabulator<T> {
         val tabulator = Tabulator(data, dataUpdateOnEdit, options, types)
-        tabulator.addCssClass(className)
+        if (className != null)
+            tabulator.addCssClass(className)
         init?.invoke(tabulator)
         return tabulator
     }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoManagerBootstrap.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoManagerBootstrap.kt
index 853e1bc..7a3451b 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoManagerBootstrap.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoManagerBootstrap.kt
@@ -28,10 +28,11 @@ internal val roManagerBootstrapInit = RoManagerBootstrap.init()
 /**
  * Internal singleton object which initializes and configures KVision Bootstrap module.
  */
+@Deprecated("remove when transparency works with Window")
 internal object RoManagerBootstrap {
     init {
-        io.kvision.require("bootstrap/dist/js/bootstrap.bundle.min.js")
-        io.kvision.require("awesome-bootstrap-checkbox")
+//        io.kvision.require("bootstrap/dist/js/bootstrap.bundle.min.js")
+//        io.kvision.require("awesome-bootstrap-checkbox")
     }
 
     private val elementResizeEvent = io.kvision.require("element-resize-event")
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoTab.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoTab.kt
index a9dbc58..2844f99 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoTab.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoTab.kt
@@ -49,6 +49,7 @@ import org.apache.isis.client.kroviz.utils.ScalableVectorGraphic
  * @param route JavaScript route to activate given tab
  * @param init an initializer extension function
  */
+@Deprecated("remove when icon menu works with Tab and SVG can be recreated")
 open class RoTab(
     label: String? = null, icon: String? = null,
     image: ResString? = null, closable: Boolean = false, val route: String? = null,
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 bb1390f..244a872 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
@@ -68,6 +68,7 @@ enum class SideTabSize {
  * @param init an initializer extension function
  */
 @Suppress("LeakingThis")
+@Deprecated("remove when icon menu works with TabPanel")
 open class RoTabPanel(
     protected val tabPosition: TabPosition = TabPosition.TOP,
     protected val sideTabSize: SideTabSize = SideTabSize.SIZE_3,
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoWindow.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoWindow.kt
index 25d5ec4..136abb6 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoWindow.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/override/RoWindow.kt
@@ -57,6 +57,7 @@ internal const val WINDOW_CONTENT_MARGIN_BOTTOM = 11
  * @param init an initializer extension function
  */
 @Suppress("TooManyFunctions")
+@Deprecated("use Window, when transparency and icon menu work")
 open class RoWindow(
         caption: String? = null,
         contentWidth: CssSize? = CssSize(0, UNIT.auto),
@@ -67,12 +68,14 @@ open class RoWindow(
         maximizeButton: Boolean = true,
         minimizeButton: Boolean = true,
         icon: String? = null,
-        classes: Set<String> = setOf(),
         menu: List<KvisionHtmlLink>? = null,
         init: (RoWindow.() -> Unit)? = null
 ) :
     SimplePanel() {
-//FIXME class +" modal-content kv-window"
+
+    init {
+        this.addCssClass("modal-content kv-window")
+    }
     /**
      * Window caption text.
      */
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/panel/ImageSample.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/panel/ImageSample.kt
index 0a08a86..9912df1 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/panel/ImageSample.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/panel/ImageSample.kt
@@ -25,7 +25,6 @@ import io.kvision.panel.VPanel
 import io.kvision.panel.vPanel
 import org.w3c.files.FileReader
 
-@Deprecated("Useful as Sample")
 object ImageSample : VPanel() {
 
     init {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt
index 5f4c974..e5a7c6c 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/IconManager.kt
@@ -113,12 +113,12 @@ object IconManager {
         return DEFAULT_ICON
     }
 
-    fun findStyleFor(actionName: String): Set<String> {
+    fun findStyleFor(actionName: String): String {
         return when (actionName) {
-            "delete" -> setOf(DANGER)
-            "undo" -> setOf(WARN)
-            "save" -> setOf(OK)
-            else -> setOf(NORMAL)
+            "delete" -> DANGER
+            "undo" -> WARN
+            "save" -> OK
+            else -> NORMAL
         }
     }