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/isis.git
commit ddeec7ef628c9b326d6900c45ae3ab495cb2aa3e Author: Joerg Rade <[email protected]> AuthorDate: Tue Oct 11 15:23:53 2022 +0200 ISIS-3171 'Strings' show up again --- .../kroviz/core/aggregator/AggregatorWithLayout.kt | 18 +++++++++-- .../kroviz/core/aggregator/CollectionAggregator.kt | 15 +-------- .../kroviz/core/aggregator/ObjectAggregator.kt | 29 +++++++++++------ .../kroviz/core/model/DisplayModelWithLayout.kt | 5 ++- .../isis/client/kroviz/core/model/ObjectDM.kt | 37 ++-------------------- 5 files changed, 43 insertions(+), 61 deletions(-) diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt index 4725f23003..19e687608b 100644 --- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt +++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/AggregatorWithLayout.kt @@ -23,8 +23,7 @@ import org.apache.isis.client.kroviz.core.event.ResourceProxy import org.apache.isis.client.kroviz.core.model.DisplayModelWithLayout import org.apache.isis.client.kroviz.core.model.ObjectDM import org.apache.isis.client.kroviz.layout.Layout -import org.apache.isis.client.kroviz.to.Represention -import org.apache.isis.client.kroviz.to.TObject +import org.apache.isis.client.kroviz.to.* import org.apache.isis.client.kroviz.to.bs.Grid import org.apache.isis.client.kroviz.ui.core.Constants import org.apache.isis.client.kroviz.ui.diagram.Tree @@ -66,7 +65,7 @@ abstract class AggregatorWithLayout : BaseAggregator() { val link = it.link!! ResourceProxy().fetch(link, this, subType = Constants.subTypeJson, referrer = referrer) } - //FIXME + //FIXME if (dm.grid == null) { dm.addGrid(grid) dm.properties.propertyLayoutList.forEach { p -> @@ -99,4 +98,17 @@ abstract class AggregatorWithLayout : BaseAggregator() { invoke(l, aggregator, referrer = referrer) } + protected fun Property.descriptionLink(): Link? { + return links.find { + it.relation() == Relation.ELEMENT_TYPE + } + } + + protected fun Property.isPropertyDescription(): Boolean { + val selfLink = this.links.find { + it.relation() == Relation.SELF + } + return selfLink!!.representation() == Represention.PROPERTY_DESCRIPTION + } + } diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/CollectionAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/CollectionAggregator.kt index b7b2a037e9..b1fd3c04a7 100644 --- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/CollectionAggregator.kt +++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/CollectionAggregator.kt @@ -124,7 +124,7 @@ class CollectionAggregator(actionTitle: String, val parent: ObjectAggregator? = ResourceProxy().fetch(it, this, referrer = referrer) } } - collection.value!!.forEach { + collection.value.forEach { ResourceProxy().fetch(it, this, referrer = referrer) } } @@ -134,17 +134,4 @@ class CollectionAggregator(actionTitle: String, val parent: ObjectAggregator? = return this } - private fun Property.descriptionLink(): Link? { - return links.find { - it.relation() == Relation.ELEMENT_TYPE - } - } - - private fun Property.isPropertyDescription(): Boolean { - val selfLink = this.links.find { - it.relation() == Relation.SELF - } - return selfLink!!.representation() == Represention.PROPERTY_DESCRIPTION - } - } diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ObjectAggregator.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ObjectAggregator.kt index 0a6f82e0a2..3f175cc339 100644 --- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ObjectAggregator.kt +++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/ObjectAggregator.kt @@ -50,7 +50,7 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() { is TObject -> handleObject(obj, referrer) is ResultObject -> handleResultObject(obj) is ResultValue -> handleResultValue(obj) - is Property -> handleProperty(obj) + is Property -> handleProperty(obj, referrer) is Layout -> handleLayout(obj, dpm as ObjectDM, referrer) is Grid -> handleGrid(obj, dpm as ObjectDM, referrer) is HttpError -> ErrorDialog(logEntry).open() @@ -74,7 +74,7 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() { } } - fun handleObject(obj: TObject, referrer: String) { + private fun handleObject(obj: TObject, referrer: String) { // After ~/action/invoke is called, the actual object instance (containing properties) needs to be invoked as well. // Note that rel.self/href is identical and both are of type TObject. logEntry.url is different, though. if (obj.getProperties().size == 0) { @@ -95,11 +95,11 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() { invoke(selfLink!!, this, referrer = referrer) } - fun handleResultObject(resultObject: ResultObject) { + private fun handleResultObject(resultObject: ResultObject) { (dpm as ObjectDM).addResult(resultObject) } - fun handleResultValue(resultValue: ResultValue) { + private fun handleResultValue(resultValue: ResultValue) { // TODO (dpm as ObjectDM).addResult(resultObject) console.log("[OA.handleResultValue]") console.log(resultValue) @@ -113,16 +113,27 @@ class ObjectAggregator(val actionTitle: String) : AggregatorWithLayout() { obj.getCollections().forEach { val key = it.id val aggregator = CollectionAggregator(key, this) - collectionMap.put(key, aggregator) + collectionMap[key] = aggregator val link = it.links.first() ResourceProxy().fetch(link, aggregator, referrer = referrer) } } - private fun handleProperty(property: Property) { - console.log("[OA.handleProperty]") - console.log(property) -// throw Throwable("[ObjectAggregator.handleProperty] not implemented yet") + private fun handleProperty(p: Property, referrer: String) { + val dm = dpm as ObjectDM + if (p.isPropertyDescription()) { + console.log("[OA.handleProperty].isPropertyDescription") + dm.addPropertyDescription(p) + } else { + console.log("[OA.handleProperty].isNotPropertyDescription") + console.log(p) + console.log(dm) + dm.addProperty(p) + val pdl = p.descriptionLink() + if (pdl != null) { + invoke(pdl, this, referrer = referrer) + } + } } override fun reset(): ObjectAggregator { diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModelWithLayout.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModelWithLayout.kt index 1be742e138..0696ff4d71 100644 --- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModelWithLayout.kt +++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/DisplayModelWithLayout.kt @@ -36,7 +36,8 @@ abstract class DisplayModelWithLayout : BaseDisplayModel() { override fun canBeDisplayed(): Boolean { return when { isRendered -> false - layout == null && grid == null -> false + layout != null -> true + grid != null -> true else -> properties.readyForDisplay() } } @@ -47,6 +48,8 @@ abstract class DisplayModelWithLayout : BaseDisplayModel() { } fun addGrid(grid: Grid) { + console.log("[DMWL.initGrid]") + console.log(grid) this.grid = grid initPropertyGridList(grid) } diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/ObjectDM.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/ObjectDM.kt index 5874406673..7290d2ea62 100644 --- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/ObjectDM.kt +++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/model/ObjectDM.kt @@ -28,48 +28,17 @@ class ObjectDM(override val title: String) : DisplayModelWithLayout() { val collections = mutableMapOf<String, CollectionDM>() private var dirty: Boolean = false - override fun canBeDisplayed(): Boolean { - // debug() - return when { - isRendered -> false - (layout == null) && (grid == null) -> false - else -> true - } - } - - private fun debug() { - console.log("[]") - console.log("[ODM.debug] data / collections / layout / grid / properties / icon / aggregator / logEntries") - console.log(data) - console.log(collections) - console.log(layout) - console.log(grid) - console.log(properties) - console.log(icon) - if (data != null) { - val delegate = (data as Exposer).delegate - val selfLink = delegate.getSelfLink() - val rs = ResourceSpecification(selfLink.href) - val es = SessionManager.getEventStore() - val le = es.findBy(rs)!! - val aggt = le.getAggregator() - console.log(aggt) - val logEntries = es.findAllBy(aggt!!) - logEntries.forEach { - console.log(it) - } - } - } - fun setDirty(value: Boolean) { dirty = value } fun addCollection(key: String, value: CollectionDM) { - collections.put(key, value) + collections[key] = value } override fun addData(obj: TransferObject) { + console.log("[ODM.addData]") + console.log(obj) (obj as TObject) val exo = Exposer(obj) data = exo.dynamise() as? Exposer
