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 2020/06/09 11:29:50 UTC
[isis] branch master updated: ISIS-2350 RoTable,
EventLogTable icons draggable
This is an automated email from the ASF dual-hosted git repository.
joergrade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 9fb1754 ISIS-2350 RoTable, EventLogTable icons draggable
new 051d3ac Merge remote-tracking branch 'origin/master'
9fb1754 is described below
commit 9fb17547486ad6eb6c0eef1b9798d60bf6c6fd98
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Tue Jun 9 13:29:01 2020 +0200
ISIS-2350 RoTable, EventLogTable icons draggable
---
.../isis/client/kroviz/ui/kv/ColumnFactory.kt | 17 ++++++---
.../isis/client/kroviz/ui/kv/EventLogTable.kt | 29 ++++++++++------
.../isis/client/kroviz/ui/kv/RoManagerBootstrap.kt | 40 ----------------------
.../org/apache/isis/client/kroviz/ui/kv/RoTable.kt | 10 ++++--
.../apache/isis/client/kroviz/ui/kv/RoToolPanel.kt | 14 +++++---
.../apache/isis/client/kroviz/ui/kv/ToolButton.kt | 27 ---------------
6 files changed, 47 insertions(+), 90 deletions(-)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt
index 9e9e37f..95772be 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ColumnFactory.kt
@@ -72,13 +72,20 @@ class ColumnFactory {
align = Align.CENTER,
width = "40",
formatterComponentFunction = { _, _, data ->
- Button(text = "", icon = data["iconName"] as? String, style = ButtonStyle.LINK).onClick {
- val tObject = (data as Exposer).delegate
- UiManager.displayModel(tObject)
- }
+ buildButton(data, data["iconName"] as? String)
})
}
+ private fun buildButton(data: Exposer, iconName: String?): Button {
+ val b = Button(text = "", icon = iconName, style = ButtonStyle.LINK).onClick {
+ val tObject = (data as Exposer).delegate
+ UiManager.displayModel(tObject)
+ }
+ b.setDragDropData(RoToolPanel.format, "element")
+ return b
+ }
+
+
private fun buildLink(): ColumnDefinition<Exposer> {
return ColumnDefinition<dynamic>(
title = "ResultListResult",
@@ -86,7 +93,7 @@ class ColumnFactory {
headerFilter = Editor.INPUT,
formatterComponentFunction = { _, _, data ->
Button(text = data["object"].title as String, icon = "fas fa-star-o", style = ButtonStyle.LINK).onClick {
- console.log(data)
+ console.log(data)
}
})
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
index b77edb3..8047106 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/EventLogTable.kt
@@ -2,6 +2,7 @@ package org.apache.isis.client.kroviz.ui.kv
import org.apache.isis.client.kroviz.core.event.LogEntry
import org.apache.isis.client.kroviz.ui.EventLogDetail
+import pl.treksoft.kvision.core.Border
import pl.treksoft.kvision.core.CssSize
import pl.treksoft.kvision.core.UNIT
import pl.treksoft.kvision.html.Button
@@ -16,8 +17,11 @@ import pl.treksoft.kvision.utils.px
class EventLogTable(val model: List<LogEntry>) : VPanel() {
+ private val calcHeight = "calc(100vh - 128px)"
+
private val columns = listOf(
- ColumnDefinition(title = "",
+ ColumnDefinition(
+ title = "",
field = "state",
width = "50",
align = Align.CENTER,
@@ -26,13 +30,13 @@ class EventLogTable(val model: List<LogEntry>) : VPanel() {
EventLogDetail(data).open()
}.apply { margin = CssSize(-10, UNIT.px) }
}),
- ColumnDefinition<LogEntry>("Title", "title",
+ ColumnDefinition<LogEntry>(
+ title ="Title",
+ field ="title",
headerFilter = Editor.INPUT,
width = "450",
formatterComponentFunction = { _, _, data ->
- Button(data.title, icon = data.state.iconName, style = ButtonStyle.LINK).onClick {
- console.log(data)
- }
+ buildButton(data)
}),
ColumnDefinition("State", "state", width = "100", headerFilter = Editor.INPUT),
ColumnDefinition("Method", "method", width = "100", headerFilter = Editor.INPUT),
@@ -56,25 +60,30 @@ class EventLogTable(val model: List<LogEntry>) : VPanel() {
width = "100")
)
+ private fun buildButton(data: LogEntry): Button {
+ val b = Button(data.title, icon = data.state.iconName, style = ButtonStyle.LINK).onClick {
+ console.log(data)
+ }
+ b.setDragDropData(RoToolPanel.format, "element")
+ return b
+ }
+
init {
hPanel(FlexWrap.NOWRAP,
alignItems = FlexAlignItems.CENTER,
spacing = 20) {
- padding = 10.px
- paddingTop = 0.px
+ border = Border(width = 1.px)
}
val options = TabulatorOptions(
movableColumns = true,
- height = "calc(100vh - 128px)",
+ height = calcHeight,
layout = Layout.FITCOLUMNS,
columns = columns,
persistenceMode = false
)
tabulator(model, options = options) {
- marginTop = 0.px
- marginBottom = 0.px
setEventListener<Tabulator<LogEntry>> {
tabulatorRowClick = {
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoManagerBootstrap.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoManagerBootstrap.kt
deleted file mode 100644
index f45e570..0000000
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoManagerBootstrap.kt
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.apache.isis.client.kroviz.ui.kv
-
-import pl.treksoft.kvision.core.Component
-import pl.treksoft.kvision.utils.isIE11
-
-internal val roManagerBootstrapInit = RoManagerBootstrap.init()
-
-/**
- * Internal singleton object which initializes and configures KVision Bootstrap module.
- */
-internal object RoManagerBootstrap {
- init {
- pl.treksoft.kvision.require("bootstrap/dist/js/bootstrap.bundle.min.js")
- pl.treksoft.kvision.require("awesome-bootstrap-checkbox")
- }
-
- private val elementResizeEvent = pl.treksoft.kvision.require("element-resize-event")
-
- @Suppress("UnsafeCastFromDynamic")
- internal fun setResizeEvent(component: Component, callback: () -> Unit) {
- if (!isIE11()) {
- component.getElement()?.let {
- elementResizeEvent(it, callback)
- }
- }
- }
-
- @Suppress("UnsafeCastFromDynamic")
- internal fun clearResizeEvent(component: Component) {
- if (!isIE11()) {
- if (component.getElement()?.asDynamic()?.__resizeTrigger__?.contentDocument != null) {
- component.getElement()?.let {
- elementResizeEvent.unbind(it)
- }
- }
- }
- }
-
- internal fun init() {}
-}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoTable.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoTable.kt
index 0b14679..8c6f071 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoTable.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoTable.kt
@@ -19,21 +19,25 @@ import pl.treksoft.kvision.tabulator.tabulator
*/
class RoTable(displayList: ListDM) : SimplePanel() {
+ private val calcHeight = "calc(100vh - 128px)"
+
init {
title = displayList.extractTitle()
width = CssSize(100, UNIT.perc)
val model = displayList.data
- val columns = ColumnFactory().buildColumns(displayList, true)
+ val columns = ColumnFactory().buildColumns(
+ displayList,
+ true)
val options = TabulatorOptions(
movableColumns = true,
- height = "calc(100vh - 128px)",
+ height = calcHeight,
layout = Layout.FITCOLUMNS,
columns = columns,
persistenceMode = false//,
//selectable = true
)
- val tableTypes = setOf(/*TableType.BORDERED,*/ TableType.STRIPED, TableType.HOVER)
+ val tableTypes = setOf(TableType.STRIPED, TableType.HOVER)
tabulator(model, options = options, types = tableTypes) {
setEventListener<Tabulator<Exposer>> {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt
index 42ebe8b..3059460 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoToolPanel.kt
@@ -1,5 +1,6 @@
package org.apache.isis.client.kroviz.ui.kv
+import kotlinx.serialization.UnstableDefault
import org.apache.isis.client.kroviz.core.model.Exposer
import org.apache.isis.client.kroviz.handler.TObjectHandler
import org.apache.isis.client.kroviz.to.TObject
@@ -11,8 +12,10 @@ import pl.treksoft.kvision.html.ButtonStyle
import pl.treksoft.kvision.panel.SimplePanel
import pl.treksoft.kvision.panel.VPanel
+@OptIn(UnstableDefault::class)
object RoToolPanel : SimplePanel() {
+ const val format = "object/model"
val panel = VPanel()
private val buttons = mutableListOf<Button>()
@@ -20,10 +23,11 @@ object RoToolPanel : SimplePanel() {
panel.marginTop = CssSize(40, UNIT.px)
panel.width = CssSize(40, UNIT.px)
panel.height = CssSize(100, UNIT.perc)
- panel.background = Background(color = Color.name(Col.LIGHTBLUE))
- panel.setDropTarget("text/plain") { data ->
+ panel.background = Background(color = Color.name(Col.GHOSTWHITE))
+ panel.setDropTarget(format) { data ->
console.log("[RoToolPanel] panel")
console.log(data)
+ //TODO extract Exposer/TO from data
val jsonStr = CFG.str
val to = TObjectHandler().parse(jsonStr) as TObject
val exp= Exposer(to)
@@ -36,16 +40,16 @@ object RoToolPanel : SimplePanel() {
private fun initButtons() {
val drop: Button = buildButton("Toolbox", "Sample drop target")
- drop.setDropTarget("text/plain") { data ->
+ drop.setDropTarget(format) { data ->
console.log("[RoToolPanel]")
console.log(data)
- val obj = data.dataTransfer?.getData("text/plain")!!
+ val obj = data.dataTransfer?.getData(format)!!
BrowserWindow("http://isis.apache.org").open()
}
buttons.add(drop)
//
val drag = buildButton("Object", "Sample drag object")
- drag.setDragDropData("text/plain", "element")
+ drag.setDragDropData(format, "element")
buttons.add(drag)
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ToolButton.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ToolButton.kt
deleted file mode 100644
index 9a3e70a..0000000
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/ToolButton.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.apache.isis.client.kroviz.ui.kv
-
-import org.w3c.dom.DragEvent
-import pl.treksoft.kvision.html.Div
-
-class ToolButton(text: String) : Div(text) {
-
- init {
- //style = ButtonStyle.LINK
- // onEvent { DragEvent. }
- }
-
- fun ondragover(ev: DragEvent) {
- ev.preventDefault()
- }
-
- fun allowDrop(ev: DragEvent) {
- ev.preventDefault()
- }
-
- fun drop(ev: DragEvent) {
- ev.preventDefault()
- //TODO
- //var data = ev.dataTransfer.getData("text");
- //ev.target.appendChild(document.getElementById(data));
- }
-}