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/02/23 20:09:10 UTC
[causeway] 10/10: ISIS-3171 Collection and Object displayed
This is an automated email from the ASF dual-hosted git repository.
joergrade pushed a commit to branch ISIS-3171
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 2f2f71a67a4e39df0897e1a02489bd6636d71033
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Thu Feb 23 21:07:22 2023 +0100
ISIS-3171 Collection and Object displayed
---
.../kroviz/core/aggregator/ActionDispatcher.kt | 2 +-
.../kroviz/core/aggregator/CollectionAggregator.kt | 2 +-
.../core/aggregator/DomainTypesAggregator.kt | 3 +-
.../kroviz/core/aggregator/ObjectAggregator.kt | 22 ++++---
.../kroviz/core/aggregator/SystemAggregator.kt | 9 +--
.../client/kroviz/core/model/CollectionDM.kt | 8 +--
.../client/kroviz/core/model/ColumnProperties.kt | 41 +++++++++++++
...ertySpecification.kt => ColumnSpecification.kt} | 2 +-
...ationHolder.kt => ColumnSpecificationHolder.kt} | 16 ++---
.../causeway/client/kroviz/core/model/ObjectDM.kt | 15 ++++-
.../kroviz/core/model/ObjectSpecificationHolder.kt | 69 ++++++++++++++++++++++
.../apache/causeway/client/kroviz/to/Property.kt | 6 ++
.../causeway/client/kroviz/to/bs/PropertyBs.kt | 2 +-
.../client/kroviz/ui/builder/ColBuilder.kt | 3 +-
.../client/kroviz/ui/core/ColumnFactory.kt | 4 +-
.../causeway/client/kroviz/ui/core/ViewManager.kt | 9 +++
16 files changed, 178 insertions(+), 35 deletions(-)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/ActionDispatcher.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/ActionDispatcher.kt
index ed33ef6a1b..8f34746442 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/ActionDispatcher.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/ActionDispatcher.kt
@@ -50,7 +50,7 @@ class ActionDispatcher(private val at: Point = Point(100, 100)) : BaseAggregator
}
to is Restful -> {}
else -> {
- console.log(to)
+// console.log(to)
// throw Throwable("[ActionDispatcher.update] ${to!!::class.simpleName}")
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/CollectionAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/CollectionAggregator.kt
index 558fda52ac..e990959d77 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/CollectionAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/CollectionAggregator.kt
@@ -108,7 +108,7 @@ class CollectionAggregator(actionTitle: String, private val parent: ObjectAggreg
// collection layout needs only to be initialized once with an object (pars pro toto, prototype)
// obj acts as a kind prototype - we assume all elements in the collection have the same structure
- val propertySpecificationHolder = getDisplayModel().propertySpecificationHolder
+ val propertySpecificationHolder = getDisplayModel().columnSpecificationHolder
if (!propertySpecificationHolder.isInitialized()) {
val members = tObj.getProperties()
members.forEach { m ->
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/DomainTypesAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/DomainTypesAggregator.kt
index 06b74a3a24..e5a1963b2a 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/DomainTypesAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/DomainTypesAggregator.kt
@@ -49,8 +49,7 @@ class DomainTypesAggregator(val url: String) : BaseAggregator() {
}
private fun handleAction(obj: Action) {
- console.log("[DTA.handleAction] $obj")
- throw Throwable("[DomainTypesAggregator.handleAction] not implemented yet") //dsp.addData(obj)
+ TODO("[DomainTypesAggregator.handleAction] not implemented yet")
}
private fun handleDomainType(obj: DomainType) {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/ObjectAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/ObjectAggregator.kt
index 32b12dce3b..202b634238 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/ObjectAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/ObjectAggregator.kt
@@ -35,7 +35,8 @@ import org.apache.causeway.client.kroviz.utils.StringUtils
* (3) ???_OBJECT_PROPERTY PropertyHandler -> invoke()
* (4) ???_PROPERTY_DESCRIPTION <PropertyDescriptionHandler>
*/
-class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() {
+class ObjectAggregator(private val actionTitle: String) : AggregatorWithLayout() {
+ private var isContainedInParentCollection = false
init {
displayModel = ObjectDM(actionTitle)
@@ -43,7 +44,9 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() {
override fun update(logEntry: LogEntry, subType: String?) {
super.update(logEntry, subType)
- if (!logEntry.isUpdatedFromParentedCollection()) {
+ if (logEntry.isUpdatedFromParentedCollection()) {
+ isContainedInParentCollection = true
+ } else {
val referrer = logEntry.url
when (val obj = logEntry.getTransferObject()) {
is TObject -> handleObject(obj, referrer)
@@ -99,10 +102,15 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() {
return displayModel.getObject()
}
- private fun handleProperty(property: Property, referrer: String) {
- //(property, referrer) //FIXME
- console.log("[OA_handleProperty] not handled")
- console.log(property)
+ private fun handleProperty(p: Property, referrer: String) {
+ val dm = getDisplayModel()
+ if (p.isPropertyDescription()) {
+ dm.addPropertyDescription(p)
+ } else {
+ dm.addProperty(p)
+ val pdl = p.getDescriptionLink() ?: return
+ invoke(pdl, this, referrer = referrer)
+ }
}
private fun handleGrid(grid: GridBs, referrer: String) {
@@ -131,7 +139,7 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() {
}
/**
- * This is done in order to have the parent check, if it and it's children can be displayed
+ * This is done in order to have the parent check, if itself and it's children can be displayed
*/
private fun LogEntry.isUpdatedFromParentedCollection(): Boolean {
return this.url == ""
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/SystemAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/SystemAggregator.kt
index d50d3e764c..e186f05416 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/SystemAggregator.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/aggregator/SystemAggregator.kt
@@ -24,10 +24,11 @@ import org.apache.causeway.client.kroviz.to.DomainTypes
import org.apache.causeway.client.kroviz.to.User
import org.apache.causeway.client.kroviz.to.Version
import org.apache.causeway.client.kroviz.ui.core.SessionManager
+import org.apache.causeway.client.kroviz.ui.core.ViewManager
import org.apache.causeway.client.kroviz.utils.ImageUtils
import org.apache.causeway.client.kroviz.utils.UrlUtils
-class SystemAggregator() : BaseAggregator() {
+class SystemAggregator : BaseAggregator() {
init {
displayModel = SystemDM("not filled (yet)")
@@ -42,13 +43,13 @@ class SystemAggregator() : BaseAggregator() {
if (logEntry.blob != null) {
val icon = ImageUtils.extractIcon(logEntry)
val url = logEntry.url
- val isApplicationIcon = UrlUtils.isApplicationIcon(url)
- when (isApplicationIcon) {
+ when (UrlUtils.isApplicationIcon(url)) {
url.contains("48") -> {
(displayModel as SystemDM).addSmallIcon(icon)
val iconUrl = icon.image.src
SessionManager.setApplicationIcon(iconUrl)
}
+
url.contains("256") -> (displayModel as SystemDM).addLargeIcon(icon)
else -> log(logEntry)
}
@@ -59,7 +60,7 @@ class SystemAggregator() : BaseAggregator() {
}
if (displayModel.readyToRender()) {
-// TODO UiManager.openObjectView(this)
+ ViewManager.openObjectView(this)
}
}
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 84ded48825..a0a3b53eed 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
@@ -27,7 +27,7 @@ import org.apache.causeway.client.kroviz.to.bs.PropertyBs
import org.apache.causeway.client.kroviz.utils.StringUtils
class CollectionDM(override val title: String) : DisplayModelWithLayout() {
- val propertySpecificationHolder = PropertySpecificationHolder()
+ val columnSpecificationHolder = ColumnSpecificationHolder()
var id = ""
var data = observableListOf<Exposer>()
@@ -45,13 +45,13 @@ class CollectionDM(override val title: String) : DisplayModelWithLayout() {
private fun addPropertyDetails(propertyBs: PropertyBs) {
val id = propertyBs.id
- val ps = propertySpecificationHolder.getPropertySpecification(id)
+ val ps = columnSpecificationHolder.getPropertySpecification(id)
ps.amendWith(propertyBs)
}
fun addPropertyDescription(propertyDescription: PropertyDescription) {
val id = propertyDescription.id
- val ps = propertySpecificationHolder.getPropertySpecification(id)
+ val ps = columnSpecificationHolder.getPropertySpecification(id)
ps.amendWith(propertyDescription)
}
@@ -64,7 +64,7 @@ class CollectionDM(override val title: String) : DisplayModelWithLayout() {
}
override fun readyToRender(): Boolean {
- return propertySpecificationHolder.readyToRender()
+ return columnSpecificationHolder.readyToRender()
}
fun getTitle(): String {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ColumnProperties.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ColumnProperties.kt
new file mode 100644
index 0000000000..19513ec867
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ColumnProperties.kt
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.causeway.client.kroviz.core.model
+
+import org.apache.causeway.client.kroviz.layout.PropertyLt
+import org.apache.causeway.client.kroviz.to.Property
+import org.apache.causeway.client.kroviz.to.bs.PropertyBs
+
+/**
+ * Properties have three aspects:
+ *
+ * - Member of a DomainObject
+ * - Description (friendlyName, etc.)
+ * - Layout (hidden, labelPosition, etc.)
+ *
+ * All three are required in order to display correctly in a table.
+ */
+@Deprecated("Rework/Rename")
+class ColumnProperties(val key: String) {
+ var property: Property? = null
+ var friendlyName: String = ""
+ var layout: PropertyLt? = null
+ var grid: PropertyBs? = null
+ var hidden: Boolean = false
+}
\ No newline at end of file
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/PropertySpecification.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ColumnSpecification.kt
similarity index 98%
rename from incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/PropertySpecification.kt
rename to incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ColumnSpecification.kt
index bbb872de0e..ee009457b7 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/PropertySpecification.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ColumnSpecification.kt
@@ -28,7 +28,7 @@ import org.apache.causeway.client.kroviz.to.bs.PropertyBs
* - id : attribute to be used to retrieve the value of each cell (id)
* - hidden : will the column be displayed or not
*/
-class PropertySpecification(member: Member) {
+class ColumnSpecification(member: Member) {
var id = member.id
var name = "" // aka: columnName, named, label, title
var hidden = true
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/PropertySpecificationHolder.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ColumnSpecificationHolder.kt
similarity index 74%
rename from incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/PropertySpecificationHolder.kt
rename to incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ColumnSpecificationHolder.kt
index 05aa7f563b..15dca34982 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/PropertySpecificationHolder.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ColumnSpecificationHolder.kt
@@ -20,11 +20,11 @@ package org.apache.causeway.client.kroviz.core.model
import org.apache.causeway.client.kroviz.to.Member
-class PropertySpecificationHolder() {
- var propertySpecificationList = mutableListOf<PropertySpecification>()
+class ColumnSpecificationHolder {
+ var columnSpecificationList = mutableListOf<ColumnSpecification>()
- fun getPropertySpecification(id: String): PropertySpecification {
- return propertySpecificationList.firstOrNull { it.id == id }!!
+ fun getPropertySpecification(id: String): ColumnSpecification {
+ return columnSpecificationList.firstOrNull { it.id == id }!!
}
fun readyToRender(): Boolean {
@@ -32,7 +32,7 @@ class PropertySpecificationHolder() {
}
private fun arePropertySpecificationsReadyToRender(): Boolean {
- propertySpecificationList.forEach {
+ columnSpecificationList.forEach {
val ready = it.readyToRender()
if (!ready) {
return false
@@ -42,12 +42,12 @@ class PropertySpecificationHolder() {
}
fun addMember(m: Member) {
- val ps = PropertySpecification(m)
- propertySpecificationList.add(ps)
+ val ps = ColumnSpecification(m)
+ columnSpecificationList.add(ps)
}
fun isInitialized(): Boolean {
- return propertySpecificationList.isNotEmpty() && propertySpecificationList.size > 0
+ return columnSpecificationList.isNotEmpty() && columnSpecificationList.size > 0
}
}
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 3ed71589f1..7e44620dc4 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
@@ -25,7 +25,7 @@ import org.apache.causeway.client.kroviz.to.*
import org.apache.causeway.client.kroviz.ui.core.SessionManager
class ObjectDM(override val title: String) : DisplayModelWithLayout() {
-
+ val properties = ObjectSpecificationHolder()
init {
layout = ObjectLayout()
}
@@ -53,7 +53,7 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() {
}
fun getCollectionDisplayModelFor(id: String): CollectionDM {
- return collectionModelList.find { it.id == id }!!
+ return collectionModelList.firstOrNull() { it.id == id }!!
}
override fun readyToRender(): Boolean {
@@ -61,11 +61,11 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() {
data == null -> false
isRendered -> false
layout == null -> false
- collectionModelList.size == 0 -> false
else -> layout!!.readyToRender() && areCollectionsReadyToRender()
}
}
+
private fun areCollectionsReadyToRender(): Boolean {
collectionModelList.forEach {
if (!it.readyToRender())
@@ -85,6 +85,15 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() {
}
}
+ fun addPropertyDescription(p: Property) {
+ properties.addPropertyDescription(p)
+ }
+
+ fun addProperty(property: Property) {
+ properties.addProperty(property)
+ }
+
+
fun addResult(resultObject: ResultObject) {
val tObj = createObjectFrom(resultObject)
this.addData(tObj)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectSpecificationHolder.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectSpecificationHolder.kt
new file mode 100644
index 0000000000..9895740d8d
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/core/model/ObjectSpecificationHolder.kt
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.causeway.client.kroviz.core.model
+
+import org.apache.causeway.client.kroviz.layout.PropertyLt
+import org.apache.causeway.client.kroviz.to.Extensions
+import org.apache.causeway.client.kroviz.to.Property
+
+@Deprecated("Rework/Rename")
+class ObjectSpecificationHolder {
+ val list = mutableListOf<ColumnProperties>()
+ private var propertyDescriptionList = mutableListOf<Property>()
+ private var propertyLayoutList = mutableListOf<PropertyLt>()
+ var propertyList = mutableListOf<Property>()
+ private var descriptionsComplete = false
+
+ fun readyToRender(): Boolean {
+ val ps = propertyList.size
+ val pls = propertyLayoutList.size
+ val pds = propertyDescriptionList.size
+ descriptionsComplete = (pds >= pls) && (ps >= pls)
+ return descriptionsComplete
+ }
+
+ fun addProperty(property: Property) {
+ propertyList.add(property)
+ val id = property.id
+ val cp = findOrCreate(id)
+ cp.property = property
+ }
+
+ fun addPropertyDescription(description: Property) {
+ propertyDescriptionList.add(description)
+ val id = description.id
+ val cp = findOrCreate(id)
+ val e: Extensions = description.extensions!!
+ cp.friendlyName = e.getFriendlyName()
+ }
+
+ private fun findOrCreate(id: String): ColumnProperties {
+ var cp = find(id)
+ if (cp == null) {
+ cp = ColumnProperties(id)
+ list.add(cp)
+ }
+ return cp
+ }
+
+ fun find(id: String): ColumnProperties? {
+ return list.find { it.key == id }
+ }
+
+}
\ No newline at end of file
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/to/Property.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/to/Property.kt
index cfa92fe569..a837a3f757 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/to/Property.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/to/Property.kt
@@ -39,6 +39,12 @@ data class Property(
return getType() == Represention.OBJECT_PROPERTY
}
+ fun getDescriptionLink(): Link? {
+ return this.links.firstOrNull {
+ it.rel == Relation.DESCRIBED_BY.type
+ }
+ }
+
fun isPropertyDescription(): Boolean {
return getType() == Represention.PROPERTY_DESCRIPTION
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/to/bs/PropertyBs.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/to/bs/PropertyBs.kt
index a9a42ee5cc..f37f7a8131 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/to/bs/PropertyBs.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/to/bs/PropertyBs.kt
@@ -34,7 +34,7 @@ class PropertyBs(node: Node) : XmlLayout() {
lateinit var action: ActionBs
init {
- // TODO improve casting, in PropertySpecification some extra check have to be performed
+ // TODO improve casting, in ColumnSpecification some extra check have to be performed
val dn = node.asDynamic()
hidden = dn.getAttribute("hidden").unsafeCast<String>()
id = dn.getAttribute("id").unsafeCast<String>()
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 279a637fe2..3f83e6b438 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
@@ -69,10 +69,11 @@ class ColBuilder : UiBuilder() {
val id = it.id
val objectDM = dsp.displayModel
val cdm = objectDM.getCollectionDisplayModelFor(id)
+ if (cdm != null) {
val fsPanel = FieldsetPanel(legend = cdm.getTitle())
fsPanel.add(RoTable(cdm))
panel.add(fsPanel)
- cdm.isRendered = true
+ cdm.isRendered = true}
}
return panel
}
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 dc52247e6f..bb3b1b9962 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
@@ -103,8 +103,8 @@ class ColumnFactory {
collectionModel: CollectionDM,
columns: MutableList<ColumnDefinition<Exposer>>,
) {
- val clo = collectionModel.propertySpecificationHolder
- val propSpecList = clo.propertySpecificationList
+ val clo = collectionModel.columnSpecificationHolder
+ val propSpecList = clo.columnSpecificationList
if (propSpecList.size == 0) {
// without this, propSpecList is empty? problem with mutable list?
throw IllegalStateException()
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/ViewManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/ViewManager.kt
index 12c3fb1ac7..37e219cf29 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/ViewManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/causeway/client/kroviz/ui/core/ViewManager.kt
@@ -29,6 +29,7 @@ import kotlinx.browser.window
import org.apache.causeway.client.kroviz.App
import org.apache.causeway.client.kroviz.core.aggregator.BaseAggregator
import org.apache.causeway.client.kroviz.core.aggregator.ObjectAggregator
+import org.apache.causeway.client.kroviz.core.aggregator.SystemAggregator
import org.apache.causeway.client.kroviz.core.aggregator.UndefinedDispatcher
import org.apache.causeway.client.kroviz.core.event.EventStore
import org.apache.causeway.client.kroviz.core.event.StatusPo
@@ -172,6 +173,14 @@ object ViewManager {
setNormalCursor()
}
+ fun openObjectView(aggregator: SystemAggregator) {
+ console.log("[VM_openObjectView]")
+ val dm = aggregator.displayModel
+/* val panel = RoDisplay(dm)
+ add(aggregator.getTitle(), panel, aggregator)*/
+ dm.isRendered = true
+ setNormalCursor()
+ }
fun openObjectView(aggregator: ObjectAggregator) {
val dm = aggregator.getDisplayModel()
val panel = RoDisplay(dm)