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/11/10 07:39:03 UTC
[isis] 05/06: ISIS-2348 Replay against current version remote
(incode/demoUrlRemote).
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
commit 52c586daa07ead9ad103a4ae5937b409749a3be2
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Wed Nov 10 08:36:55 2021 +0100
ISIS-2348 Replay against current version remote (incode/demoUrlRemote).
---
.../org/apache/isis/client/kroviz/core/Session.kt | 5 +-
.../isis/client/kroviz/core/event/LogEntry.kt | 4 +
.../isis/client/kroviz/core/event/ReplayCommand.kt | 25 ++-
.../apache/isis/client/kroviz/ui/core/Constants.kt | 2 +-
.../apache/isis/client/kroviz/ui/core/RoMenuBar.kt | 7 +-
.../apache/isis/client/kroviz/ui/core/UiManager.kt | 6 +-
.../client/kroviz/ui/diagram/LinkTreeDiagram.kt | 2 +-
.../isis/client/kroviz/ui/dialog/ErrorDialog.kt | 10 +-
.../isis/client/kroviz/ui/dialog/EventDialog.kt | 99 ++++++++++++
.../client/kroviz/ui/dialog/EventImportDialog.kt | 165 ++++++++++++++++++++
.../isis/client/kroviz/ui/dialog/LoginPrompt.kt | 3 -
.../apache/isis/client/kroviz/utils/IconManager.kt | 173 +++++++++++----------
.../apache/isis/client/kroviz/utils/StringUtils.kt | 2 +-
.../isis/client/kroviz/util/StringUtilsTest.kt | 2 +-
14 files changed, 395 insertions(+), 110 deletions(-)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/Session.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/Session.kt
index feb12f0..afb43b5 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/Session.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/Session.kt
@@ -28,15 +28,14 @@ import org.apache.isis.client.kroviz.utils.StringUtils
class Session {
private var user: String = ""
private var pw: String = ""
- var url: String = ""
+ var baseUrl: String = ""
val eventStore = EventStore()
fun login(url: String, user: String, pw: String) {
this.user = user
this.pw = pw
- this.url = url
+ this.baseUrl = url
UiManager.updateUser(user)
-// UiManager.updatePower("Powered By: Apache Isis")
}
fun getCredentials(): String {
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 ed2350d..6e6ebc1 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
@@ -231,6 +231,10 @@ data class LogEntry(
fun getAggregator(): BaseAggregator {
//TODO the last aggt is not always the right one
// callers need to filter !!!
+ if (aggregators.size == 0) {
+ console.log("[LE.getAggregator]")
+ console.log(this)
+ }
return aggregators.last()
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ReplayCommand.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ReplayCommand.kt
index c6d3297..e16da18 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ReplayCommand.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/ReplayCommand.kt
@@ -27,6 +27,7 @@ import org.apache.isis.client.kroviz.main
import org.apache.isis.client.kroviz.to.Link
import org.apache.isis.client.kroviz.to.Represention
import org.apache.isis.client.kroviz.to.TObject
+import org.apache.isis.client.kroviz.ui.core.Constants
import org.apache.isis.client.kroviz.ui.core.UiManager
import org.apache.isis.client.kroviz.ui.dialog.ReplayDiffDialog
@@ -34,21 +35,29 @@ val AppScope = CoroutineScope(window.asCoroutineDispatcher())
class ReplayCommand {
private val eventStore = UiManager.getEventStore()
+ private val oldBaseUrl = UiManager.getBaseUrl()
- fun execute() {
+ fun execute(
+ urlUnderTest: String = Constants.demoUrlRemote,
+ userUnderTest: String = Constants.demoUser,
+ passUnderTest: String = Constants.demoPass
+ ) {
val expectedEvents = copyEvents(eventStore.log)
eventStore.reset()
main() // re-creates the UI, but keeps the UiManager(singleton/object) and the session
+ UiManager.login(urlUnderTest, userUnderTest, passUnderTest)
+ console.log("[RC.execute]")
+ console.log(urlUnderTest)
val uiEvents = filterReplayEvents(expectedEvents)
- replay(uiEvents)
- val actualEvents: MutableList<LogEntry> = eventStore.log
+ replay(uiEvents, urlUnderTest)
+ val actualEvents: MutableList<LogEntry> = eventStore.log
val rdd = ReplayDiffDialog(expectedEvents, actualEvents)
rdd.dialog.open()
}
- private fun replay(userActions: List<LogEntry>) {
+ private fun replay(userActions: List<LogEntry>, newBaseUrl: String) {
var previous: LogEntry? = null
userActions.forEach {
if (it.isUserAction() && previous != null) {
@@ -59,7 +68,11 @@ class ReplayCommand {
ResourceProxy().load(obj)
}
} else {
- val link = Link(href = it.url)
+ var href = it.url
+ if (href.startsWith(oldBaseUrl)) {
+ href = href.replace(oldBaseUrl, newBaseUrl)
+ }
+ val link = Link(href = href)
ResourceProxy().fetch(link, null, it.subType)
}
previous = it
@@ -69,7 +82,7 @@ class ReplayCommand {
private fun calculateDelay(previous: LogEntry, current: LogEntry): Long {
val currentMs = current.createdAt.getTime()
val previousMs = previous.createdAt.getTime()
- return currentMs.minus(previousMs).toLong()
+ return currentMs.minus(previousMs).toLong()
}
private fun filterReplayEvents(events: List<LogEntry>): List<LogEntry> {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/Constants.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/Constants.kt
index c01a0d9..076960a 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/Constants.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/Constants.kt
@@ -38,5 +38,5 @@ object Constants {
const val demoUrl = "http://localhost:8080/"
const val demoUser = "sven"
const val demoPass = "pass"
- //const val demoUrl = "https://demo-wicket.jdo.isis.incode.work/"
+ const val demoUrlRemote = "https://demo-wicket.jdo.isis.incode.work/"
}
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 3df4437..a6043b5 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
@@ -32,6 +32,7 @@ import org.apache.isis.client.kroviz.core.event.ReplayCommand
import org.apache.isis.client.kroviz.to.mb.Menubars
import org.apache.isis.client.kroviz.ui.chart.SampleChartModel
import org.apache.isis.client.kroviz.ui.dialog.About
+import org.apache.isis.client.kroviz.ui.dialog.EventDialog
import org.apache.isis.client.kroviz.ui.dialog.LoginPrompt
import org.apache.isis.client.kroviz.ui.dialog.SvgInline
import org.apache.isis.client.kroviz.ui.panel.*
@@ -82,7 +83,11 @@ class RoMenuBar : SimplePanel() {
)
mainMenu.add(
- buildMenuEntry("Replay", "Replay", { ReplayCommand().execute() })
+ buildMenuEntry("Events", "Event", { EventDialog().open() })
+ )
+
+ mainMenu.add(
+ buildMenuEntry("Replay", "Replay", { })
)
mainMenu.add(
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/UiManager.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/UiManager.kt
index 395c603..a75b415 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/UiManager.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/core/UiManager.kt
@@ -194,11 +194,11 @@ object UiManager {
return sessions.first()
}
- fun getUrl(): String {
+ fun getBaseUrl(): String {
val s = getSession()
return when (s) {
null -> ""
- else -> s.url
+ else -> s.baseUrl
}
}
@@ -217,7 +217,7 @@ object UiManager {
fun login(url: String, username: String, password: String) {
val s = Session()
s.login(url, username, password)
- sessions.add(s)
+ sessions.add(0,s)
}
fun getCredentials(): String {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
index 749f715..80b8a10 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/diagram/LinkTreeDiagram.kt
@@ -31,7 +31,7 @@ import org.apache.isis.client.kroviz.utils.StringUtils
object LinkTreeDiagram {
- private val protocolHostPort = UiManager.getUrl()
+ private val protocolHostPort = UiManager.getBaseUrl()
fun build(aggregator: BaseAggregator): String {
val pc = PumlCode()
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/ErrorDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/ErrorDialog.kt
index 9ced7b1..066ccc9 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/ErrorDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/ErrorDialog.kt
@@ -38,10 +38,12 @@ class ErrorDialog(val logEntry: LogEntry) : Command() {
}
val label = "HttpError " + error.httpStatusCode.toString()
RoDialog(
- caption = label,
- items = formItems,
- command = this,
- widthPerc = 80).open()
+ caption = label,
+ items = formItems,
+ command = this,
+ widthPerc = 80,
+ heightPerc = 70
+ ).open()
}
private fun toString(stackTrace: List<String>): String {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventDialog.kt
new file mode 100644
index 0000000..712c6fc
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventDialog.kt
@@ -0,0 +1,99 @@
+/*
+ * 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.isis.client.kroviz.ui.dialog
+
+import io.kvision.core.CssSize
+import io.kvision.core.FlexDirection
+import io.kvision.core.UNIT
+import io.kvision.panel.VPanel
+import org.apache.isis.client.kroviz.core.event.ReplayCommand
+import org.apache.isis.client.kroviz.to.ValueType
+import org.apache.isis.client.kroviz.ui.core.FormItem
+import org.apache.isis.client.kroviz.ui.core.RoDialog
+import org.apache.isis.client.kroviz.ui.core.UiManager
+import org.apache.isis.client.kroviz.ui.panel.EventLogTable
+
+class EventDialog() : Command() {
+ var dialog: RoDialog
+
+ private val eventPanel = VPanel(spacing = 3) {
+ width = CssSize(100, UNIT.perc)
+ }
+
+ // callback parameter
+ private val EXP: String = "exp"
+ private val IMP: String = "imp"
+ private val REP: String = "rep"
+
+ init {
+ //FIXME actions Pin Export Replay Close
+ val customButtons = mutableListOf<FormItem>()
+ customButtons.add(FormItem("Export", ValueType.BUTTON, null, callBack = this, callBackAction = EXP))
+ customButtons.add(FormItem("Import", ValueType.BUTTON, null, callBack = this, callBackAction = IMP))
+ customButtons.add(FormItem("Replay", ValueType.BUTTON, null, callBack = this, callBackAction = REP))
+
+ dialog = RoDialog(
+ caption = "Event History",
+ items = mutableListOf(),
+ command = this,
+ defaultAction = "Pin",
+ widthPerc = 60,
+ heightPerc = 70,
+ customButtons = customButtons
+ )
+ val eventTable = EventLogTable(UiManager.getEventStore().log)
+ eventTable.tabulator.addCssClass("tabulator-in-dialog")
+ eventPanel.add(eventTable)
+
+ val mainPanel = VPanel()
+ mainPanel.addCssClass("dialog-content")
+ mainPanel.flexDirection = FlexDirection.ROW
+ mainPanel.add(eventTable)
+ dialog.formPanel!!.add(mainPanel)
+ }
+
+ override fun execute(action: String?) {
+ when {
+ action.isNullOrEmpty() -> {
+ UiManager.add("Event Log", EventLogTable(UiManager.getEventStore().log))
+ dialog.close()
+ }
+ action == EXP -> {
+ EventExportDialog().open()
+ dialog.close()
+ }
+ action == IMP -> {
+ EventImportDialog().open()
+ dialog.close()
+ }
+ action == REP -> {
+ ReplayCommand().execute()
+ dialog.close()
+ }
+ else -> {
+ }
+ }
+ }
+
+ fun open() {
+ dialog.open()
+ }
+
+}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventImportDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventImportDialog.kt
new file mode 100644
index 0000000..52fe9a9
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/EventImportDialog.kt
@@ -0,0 +1,165 @@
+/*
+ * 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.isis.client.kroviz.ui.dialog
+
+import org.apache.isis.client.kroviz.core.event.EventState
+import org.apache.isis.client.kroviz.core.event.LogEntry
+import org.apache.isis.client.kroviz.core.event.ReplayEvent
+import org.apache.isis.client.kroviz.to.ValueType
+import org.apache.isis.client.kroviz.ui.core.RoDialog
+import io.kvision.core.StringPair
+import io.kvision.form.select.SimpleSelect
+import org.apache.isis.client.kroviz.ui.core.FormItem
+import org.apache.isis.client.kroviz.ui.core.UiManager
+
+class EventImportDialog() : Command() {
+
+ private lateinit var form: RoDialog
+ private var output: String = ""
+ val formItems = mutableListOf<FormItem>()
+ val events = mutableListOf<ReplayEvent>()
+
+ private fun collectReplayEvents() {
+ UiManager.getEventStore().log.forEach { it ->
+ val re = buildExportEvent(it)
+ when (it.state) {
+ EventState.SUCCESS_JS -> events.add(re)
+ EventState.SUCCESS_XML -> events.add(re)
+ EventState.ERROR -> events.add(re)
+ else -> {
+ }
+ }
+ }
+ }
+
+ override fun execute(action:String?) {
+ val filter = extractUserInput("Filter")
+ var fileName = ""
+ when (filter) {
+ "NONE" -> {
+ collectAllEvents()
+ fileName += "AllEvents"
+ }
+ "REPLAY" -> {
+ collectReplayEvents()
+ fileName += "ReplayEvents"
+ }
+ "UNFINISHED" -> {
+ collectUnfinishedEvents()
+ fileName += "UnfinishedEvents"
+ }
+ else -> {
+ }
+ }
+ val format = extractUserInput("Format")
+ when (format) {
+ "CSV" -> {
+ output = asCsv(events)
+ fileName += ".csv"
+ }
+ "JSON" -> {
+ output = JSON.stringify(events)
+ fileName += ".json"
+ }
+ else -> {
+ }
+ }
+ DownloadDialog(fileName, output).open()
+ }
+
+ private fun extractUserInput(fieldName: String): String? {
+ val formPanel = form.formPanel
+ val kids = formPanel!!.getChildren()
+ //iterate over FormItems (0,1) but not Buttons(2,3)
+ for (i in kids) {
+ when (i) {
+ is SimpleSelect -> {
+ val key = i.label!!
+ val value = i.getValue()!!
+ if (key == fieldName) {
+ return value
+ }
+ }
+ }
+ }
+ return null
+ }
+
+ private fun collectUnfinishedEvents() {
+ UiManager.getEventStore().log.forEach { it ->
+ val re = buildExportEvent(it)
+ when (it.state) {
+ EventState.RUNNING -> events.add(re)
+ EventState.ERROR -> events.add(re)
+ else -> {
+ }
+ }
+ }
+ }
+
+ private fun collectAllEvents() {
+ UiManager.getEventStore().log.forEach { it ->
+ val re = buildExportEvent(it)
+ events.add(re)
+ }
+ }
+
+ fun open() {
+ val format = mutableListOf<StringPair>()
+ format.add(StringPair("CSV", "CSV"))
+ format.add(StringPair("JSON", "JSON"))
+ formItems.add(FormItem("Format", ValueType.SIMPLE_SELECT, format))
+ val filter = mutableListOf<StringPair>()
+ filter.add(StringPair("NONE", "No Filter"))
+ filter.add(StringPair("REPLAY", "For Replay"))
+ filter.add(StringPair("UNFINISHED", "Unfinished"))
+ formItems.add(FormItem("Filter", ValueType.SIMPLE_SELECT, filter))
+
+ form = RoDialog(caption = "Export", items = formItems, command = this)
+ form.open()
+ }
+
+ private fun asCsv(events: MutableList<ReplayEvent>): String {
+ val del = ";"
+ val nl = "\n"
+ var csv = "URL$del STATE$del METHOD$del REQUEST$del START$del DURATION$nl"
+ events.forEach { e ->
+ csv += e.url + del
+ csv += e.state + del
+ csv += e.method + del
+ csv += e.request + del
+ csv += e.start + del
+ csv += e.duration.toString() + nl
+ }
+ return csv
+ }
+
+ private fun buildExportEvent(logEntry: LogEntry): ReplayEvent {
+ return ReplayEvent(
+ url = logEntry.url,
+ method = logEntry.method!!,
+ request = logEntry.request,
+ state = logEntry.state.toString(),
+ start = logEntry.createdAt.toISOString() ,
+ duration = logEntry.duration,
+ response = logEntry.response
+ )
+ }
+
+}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/LoginPrompt.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/LoginPrompt.kt
index e11e5a7..628057b 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/LoginPrompt.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/dialog/LoginPrompt.kt
@@ -20,15 +20,12 @@ package org.apache.isis.client.kroviz.ui.dialog
import io.kvision.form.text.Password
import io.kvision.form.text.Text
-import kotlinx.browser.document
-import kotlinx.browser.window
import org.apache.isis.client.kroviz.to.Link
import org.apache.isis.client.kroviz.to.ValueType
import org.apache.isis.client.kroviz.ui.core.Constants
import org.apache.isis.client.kroviz.ui.core.FormItem
import org.apache.isis.client.kroviz.ui.core.RoDialog
import org.apache.isis.client.kroviz.ui.core.UiManager
-import org.apache.isis.client.kroviz.utils.Point
class LoginPrompt : Command() {
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 5a00a3c..b02958c 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
@@ -30,92 +30,93 @@ object IconManager {
/* Merge with configuration values*/
private val word2Icon = mapOf(
- "About" to "lightbulb-o",
- "Actions" to "ellipsis-v",
- "All" to "asterisk",
- "Basic" to "minus-circle",
- "Blobs" to "cloud",
- "Burger" to "bars",
- "Chart" to "magic",
- "Close" to "times",
- "Collections" to "list",
- "Compare" to "balance-scale",
- "Configuration" to "wrench",
- "Connect" to "plug",
- "Console" to "terminal",
- "Create" to "plus",
- "Css" to "css3",
- "Dates" to "calendar",
- "Debug" to "bug",
- "Delete" to "trash",
- "Demo" to "eye",
- "Details" to "info-circle",
- "Described" to "tag",
- "Diagram" to "project-diagram",
- "Download" to "download",
- "Factory" to "industry",
- "Featured" to "keyboard",
- "Featured Types" to "keyboard",
- "Edit" to "pencil",
- "Error Handling" to "bug",
- "Error" to "bug",
- "Event" to "bolt",
- "Experimental" to "flask",
- "Export" to "file-export",
- "Facet" to "gem",
- "Find" to "search",
- "Hidden" to "ban",
- "Hierarchy" to "sitemap",
- "History" to "history",
- "Hsql" to "database",
- "Isis" to "ankh",
- "JEE/CDI" to "jedi",
- "List" to "list",
- "Location" to "map-marker",
- "Log" to "history",
- "Logout" to "user-times",
- "Manager" to "manager",
- "Map" to "map",
- "Me" to "user",
- "Message" to "envelope",
- "More" to "plus-circle",
- "Named" to "book",
- "Notification" to "bell",
- "Notifications" to "bell",
- "Object" to "cube",
- "Objects" to "cubes",
- "OK" to "check",
- "Open" to "book",
- "Other" to "asterisk",
- "Pin" to "map-pin",
- "Primitives" to "hashtag",
- "Properties" to "indent",
- "Prototyping" to "object-group",
- "Queen" to "chess-queen",
- "Replay" to "fast-forward",
- "Run" to "rocket",
- "Save" to "file",
- "Security" to "lock",
- "Simple" to "cubes",
- "Strings" to "font",
- "Switch" to "power-off",
- "Target" to "bullseye",
- "Tab" to "folder",
- "Text" to "font",
- "Times" to "clock",
- "Toast" to "bread-slice", //comment-alt-plus/minus/exclamation
- "Toolbar" to "step-backward",
- "Tooltips" to "comment-alt",
- "Temporal" to "clock",
- "Tenancy" to "lock",
- "Trees" to "tree",
- "Types" to "typewriter",
- "Undo" to "undo",
- "Unknown" to "question",
- "Visualize" to "eye",
- "Wikipedia" to "wikipedia-w",
- "World" to "plane",
- "Xml" to "code"
+ "About" to "lightbulb-o",
+ "Actions" to "ellipsis-v",
+ "All" to "asterisk",
+ "Basic" to "minus-circle",
+ "Blobs" to "cloud",
+ "Burger" to "bars",
+ "Chart" to "magic",
+ "Close" to "times",
+ "Collections" to "list",
+ "Compare" to "balance-scale",
+ "Configuration" to "wrench",
+ "Connect" to "plug",
+ "Console" to "terminal",
+ "Create" to "plus",
+ "Css" to "css3",
+ "Dates" to "calendar",
+ "Debug" to "bug",
+ "Delete" to "trash",
+ "Demo" to "eye",
+ "Details" to "info-circle",
+ "Described" to "tag",
+ "Diagram" to "project-diagram",
+ "Download" to "download",
+ "Factory" to "industry",
+ "Featured" to "keyboard",
+ "Featured Types" to "keyboard",
+ "Edit" to "pencil",
+ "Error Handling" to "bug",
+ "Error" to "bug",
+ "Event" to "bolt",
+ "Experimental" to "flask",
+ "Export" to "file-export",
+ "Facet" to "gem",
+ "Find" to "search",
+ "Hidden" to "ban",
+ "Hierarchy" to "sitemap",
+ "History" to "history",
+ "Hsql" to "database",
+ "Import" to "file-import",
+ "Isis" to "ankh",
+ "JEE/CDI" to "jedi",
+ "List" to "list",
+ "Location" to "map-marker",
+ "Log" to "history",
+ "Logout" to "user-times",
+ "Manager" to "manager",
+ "Map" to "map",
+ "Me" to "user",
+ "Message" to "envelope",
+ "More" to "plus-circle",
+ "Named" to "book",
+ "Notification" to "bell",
+ "Notifications" to "bell",
+ "Object" to "cube",
+ "Objects" to "cubes",
+ "OK" to "check",
+ "Open" to "book",
+ "Other" to "asterisk",
+ "Pin" to "map-pin",
+ "Primitives" to "hashtag",
+ "Properties" to "indent",
+ "Prototyping" to "object-group",
+ "Queen" to "chess-queen",
+ "Replay" to "fast-forward",
+ "Run" to "rocket",
+ "Save" to "file",
+ "Security" to "lock",
+ "Simple" to "cubes",
+ "Strings" to "font",
+ "Switch" to "power-off",
+ "Target" to "bullseye",
+ "Tab" to "folder",
+ "Text" to "font",
+ "Times" to "clock",
+ "Toast" to "bread-slice", //comment-alt-plus/minus/exclamation
+ "Toolbar" to "step-backward",
+ "Tooltips" to "comment-alt",
+ "Temporal" to "clock",
+ "Tenancy" to "lock",
+ "Trees" to "tree",
+ "Types" to "typewriter",
+ "Undo" to "undo",
+ "Unknown" to "question",
+ "Visualize" to "eye",
+ "Wikipedia" to "wikipedia-w",
+ "World" to "plane",
+ "Xml" to "code"
)
@OptIn(ExperimentalStdlibApi::class)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/StringUtils.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/StringUtils.kt
index b52d456..e2e77e8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/StringUtils.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/StringUtils.kt
@@ -227,7 +227,7 @@ object StringUtils {
val signature = Constants.restInfix
if (url.contains(signature)) {
// strip off protocol, host, port
- val protocolHostPort = UiManager.getUrl()
+ val protocolHostPort = UiManager.getBaseUrl()
result = result.replace(protocolHostPort + signature, "")
result = StringUtils.removeHexCode(result)
}
diff --git a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/util/StringUtilsTest.kt b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/util/StringUtilsTest.kt
index dd37408..9536a9d 100644
--- a/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/util/StringUtilsTest.kt
+++ b/incubator/clients/kroviz/src/test/kotlin/org/apache/isis/client/kroviz/util/StringUtilsTest.kt
@@ -15,7 +15,7 @@ class StringUtilsTest {
val url = "http://localhost:8080/restful/domain-types/demo.JavaLangStrings/collections/entities"
// when
- val protocolHostPort = UiManager.getUrl()
+ val protocolHostPort = UiManager.getBaseUrl()
// then
assertTrue(protocolHostPort.startsWith("http://"))