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
}
}