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/07/05 14:21:11 UTC
[isis] 01/03: ISIS-2342 GeoMap extended by layers, multiple markers,
fitMarkers,
drag&drop exampe. Apache CopyRight notice added in touched files.
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 51b9656c5f721e9b28066561cce09194c40f3de6
Author: Jörg Rade <jo...@kuehne-nagel.com>
AuthorDate: Wed Jul 1 13:40:03 2020 +0200
ISIS-2342 GeoMap extended by layers, multiple markers, fitMarkers, drag&drop exampe. Apache CopyRight notice added in touched files.
---
incubator/clients/kroviz/README.md | 8 --
incubator/clients/kroviz/build.gradle.kts | 2 +-
incubator/clients/kroviz/docs/DevelopmentGuide.md | 12 +++
incubator/clients/kroviz/gradle.properties | 2 +-
.../kotlin/org/apache/isis/client/kroviz/App.kt | 3 +-
.../kroviz/core/aggregator/DiagramDispatcher.kt | 22 +++-
.../client/kroviz/core/event/RoXmlHttpRequest.kt | 22 +++-
.../apache/isis/client/kroviz/ui/ExportDialog.kt | 22 +++-
.../apache/isis/client/kroviz/ui/ImageDialog.kt | 8 +-
.../isis/client/kroviz/ui/builder/ColBuilder.kt | 18 ++++
.../isis/client/kroviz/ui/kv/ColumnFactory.kt | 20 +++-
.../apache/isis/client/kroviz/ui/kv/Constants.kt | 23 ++++-
.../isis/client/kroviz/ui/kv/EventLogTable.kt | 20 +++-
.../org/apache/isis/client/kroviz/ui/kv/GeoMap.kt | 84 +++++++++++++--
.../apache/isis/client/kroviz/ui/kv/MenuFactory.kt | 24 ++++-
.../org/apache/isis/client/kroviz/ui/kv/RoApp.kt | 23 ++++-
.../apache/isis/client/kroviz/ui/kv/RoDialog.kt | 10 +-
.../apache/isis/client/kroviz/ui/kv/RoIconBar.kt | 26 ++++-
.../apache/isis/client/kroviz/ui/kv/RoMenuBar.kt | 31 +++++-
.../apache/isis/client/kroviz/ui/kv/RoStatusBar.kt | 10 +-
.../apache/isis/client/kroviz/ui/kv/RoTabPanel.kt | 22 +++-
.../org/apache/isis/client/kroviz/ui/kv/RoTable.kt | 18 ++++
.../org/apache/isis/client/kroviz/ui/kv/RoView.kt | 26 ++++-
.../org/apache/isis/client/kroviz/ui/kv/SvgMap.kt | 113 +++++++++++++++++++++
.../kroviz/utils/{DomHelper.kt => DomUtil.kt} | 20 +++-
.../apache/isis/client/kroviz/utils/IconManager.kt | 1 +
.../client/kroviz/utils/ScalableVectorGraphic.kt | 3 +-
.../kroviz/src/main/resources/css/kroviz.css | 61 ++++++++---
28 files changed, 574 insertions(+), 80 deletions(-)
diff --git a/incubator/clients/kroviz/README.md b/incubator/clients/kroviz/README.md
index 5e64e78..0bdf615 100644
--- a/incubator/clients/kroviz/README.md
+++ b/incubator/clients/kroviz/README.md
@@ -2,10 +2,6 @@
# kroviz
(to be pronounced: [krous]) is a viewer for [Restful Objects](http://www.restfulobjects.org) written in [Kotlin/JS](https://github.com/JetBrains/kotlin/tree/master/js), using [KVision](https://rjaros.github.io/kvision) for the UI part.
-
-[](https://travis-ci.com/joerg-rade/kroviz.svg?branch=master)
-[](https://coveralls.io/github/joerg-rade/kroviz?branch=master)
-[](https://opensource.org/licenses/Apache-2.0)
## About
kroviz is a generic client for applications that implement the Restful Objects Specification, namely:
@@ -58,7 +54,3 @@ Contributions are welcome! Especially:
* documentation improvements
* feature requests
* comments regarding usability
-
-The contribution workflow is analogous to that of Apache Isis (see: [Contributing](https://isis.apache.org/guides/dg/dg.html#_dg_contributing)),
-except for issues use GitHub instead of JIRA.
-
diff --git a/incubator/clients/kroviz/build.gradle.kts b/incubator/clients/kroviz/build.gradle.kts
index 913f63c..ec68f5a 100644
--- a/incubator/clients/kroviz/build.gradle.kts
+++ b/incubator/clients/kroviz/build.gradle.kts
@@ -18,6 +18,7 @@ group = "org.apache.isis.client"
repositories {
mavenCentral()
+ mavenLocal()
jcenter()
maven { url = uri("https://dl.bintray.com/kotlin/kotlin-eap") }
maven { url = uri("https://kotlin.bintray.com/kotlinx") }
@@ -30,7 +31,6 @@ repositories {
}
}
maven { url = uri("https://dl.bintray.com/rjaros/kotlin") }
- mavenLocal()
}
// Versions
diff --git a/incubator/clients/kroviz/docs/DevelopmentGuide.md b/incubator/clients/kroviz/docs/DevelopmentGuide.md
index 02da234..1919520 100644
--- a/incubator/clients/kroviz/docs/DevelopmentGuide.md
+++ b/incubator/clients/kroviz/docs/DevelopmentGuide.md
@@ -293,3 +293,15 @@ See: elp.kapowsoftware.com/9.4/index.jsp?topic=/doc/rm/JSONTerminology.html
### Solution 3:
Incorporate kroviz.js eg. in the WAR containing your Apache Isis backend.
+
+ # Extensions
+
+ ## OSM/Leaflet
+ * 2.5D, buildings see https://osmbuildings.org/documentation/leaflet/
+ * Magnifying Glass
+ * Wikipedia markers
+ * Routing
+
+ ## Chart.js
+
+ * SanKey diagarms, see CodePen example
diff --git a/incubator/clients/kroviz/gradle.properties b/incubator/clients/kroviz/gradle.properties
index 09d6f15..86aa7ed 100644
--- a/incubator/clients/kroviz/gradle.properties
+++ b/incubator/clients/kroviz/gradle.properties
@@ -3,4 +3,4 @@ javaVersion=1.8
systemProp.kotlinVersion=1.3.72
serializationVersion=0.20.0
#Dependencies
-systemProp.kvisionVersion=3.10.1
+systemProp.kvisionVersion=3.10.2-SNAPSHOT
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 0cb2ed0..0223ae6 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
@@ -1,5 +1,6 @@
package org.apache.isis.client.kroviz
+import org.apache.isis.client.kroviz.ui.kv.RoApp
import pl.treksoft.kvision.Application
import pl.treksoft.kvision.pace.Pace
import pl.treksoft.kvision.panel.root
@@ -19,7 +20,7 @@ class App : Application() {
root("kroviz") {
vPanel(spacing = 0) {
padding = 0.px
- add(org.apache.isis.client.kroviz.ui.kv.RoApp)
+ add(RoApp)
}
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/DiagramDispatcher.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/DiagramDispatcher.kt
index 2ce0e7a..b678713 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/DiagramDispatcher.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/aggregator/DiagramDispatcher.kt
@@ -1,13 +1,31 @@
+/*
+ * 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.core.aggregator
import org.apache.isis.client.kroviz.core.event.LogEntry
-import org.apache.isis.client.kroviz.utils.DomHelper
+import org.apache.isis.client.kroviz.utils.DomUtil
class DiagramDispatcher(private val uuid: String) : BaseAggregator() {
override fun update(logEntry: LogEntry, subType: String) {
val response = logEntry.response
- DomHelper.appendTo(response, uuid)
+ DomUtil.appendTo(response, uuid)
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/RoXmlHttpRequest.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/RoXmlHttpRequest.kt
index e3e12d2..4430ff1 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/RoXmlHttpRequest.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/core/event/RoXmlHttpRequest.kt
@@ -1,3 +1,21 @@
+/*
+ * 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.core.event
import org.apache.isis.client.kroviz.core.aggregator.BaseAggregator
@@ -77,8 +95,8 @@ class RoXmlHttpRequest {
val xhr = XMLHttpRequest()
xhr.open(method, url, true)
- xhr.setRequestHeader("Content-Type", Constants.format)
- xhr.setRequestHeader("Accept", "image/svg+xml")
+ xhr.setRequestHeader("Content-Type", Constants.stdMimeType)
+ xhr.setRequestHeader("Accept", Constants.svgMimeType)
val reSpec = ResourceSpecification(url, Constants.subTypeXml)
xhr.onload = { _ -> resultHandler(reSpec, xhr.responseText) }
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ExportDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ExportDialog.kt
index 6256e79..bbcacbf 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ExportDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ExportDialog.kt
@@ -1,10 +1,28 @@
+/*
+ * 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
import org.apache.isis.client.kroviz.core.event.EventState
import org.apache.isis.client.kroviz.core.event.EventStore
import org.apache.isis.client.kroviz.core.event.ReplayEvent
import org.apache.isis.client.kroviz.ui.kv.RoDialog
-import org.apache.isis.client.kroviz.utils.DomHelper
+import org.apache.isis.client.kroviz.utils.DomUtil
import org.apache.isis.client.kroviz.utils.Utils
class ExportDialog() :Command() {
@@ -43,7 +61,7 @@ class ExportDialog() :Command() {
}
override fun execute() {
- DomHelper.download("ReplayEvents.json", jsonOutput)
+ DomUtil.download("ReplayEvents.json", jsonOutput)
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ImageDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ImageDialog.kt
index 87c82c5..931201b 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ImageDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/ImageDialog.kt
@@ -21,7 +21,7 @@ package org.apache.isis.client.kroviz.ui
import org.apache.isis.client.kroviz.to.ValueType
import org.apache.isis.client.kroviz.ui.kv.RoDialog
import org.apache.isis.client.kroviz.utils.Direction
-import org.apache.isis.client.kroviz.utils.DomHelper
+import org.apache.isis.client.kroviz.utils.DomUtil
import org.apache.isis.client.kroviz.utils.ScalableVectorGraphic
import org.apache.isis.client.kroviz.utils.UmlUtils
@@ -29,7 +29,7 @@ class ImageDialog(
var label: String,
private var pumlCode: String) : Command() {
- private val uuid: String = DomHelper.uuid()
+ private val uuid: String = DomUtil.uuid()
private var dialog: RoDialog
private val formItems = mutableListOf<FormItem>()
@@ -50,14 +50,14 @@ class ImageDialog(
}
fun scale(direction: Direction) {
- val oldElement = DomHelper.getById(uuid)!!
+ val oldElement = DomUtil.getById(uuid)!!
val oldStr = oldElement.innerHTML
val newImage = ScalableVectorGraphic(oldStr)
when (direction) {
Direction.UP -> newImage.scaleUp()
Direction.DOWN -> newImage.scaleDown()
}
- DomHelper.replaceWith(uuid, newImage)
+ DomUtil.replaceWith(uuid, newImage)
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/builder/ColBuilder.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/builder/ColBuilder.kt
index 2334638..d901382 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/builder/ColBuilder.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/builder/ColBuilder.kt
@@ -1,3 +1,21 @@
+/*
+ * 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.builder
import org.apache.isis.client.kroviz.to.TObject
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 d3e13f0..0718073 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
@@ -1,3 +1,21 @@
+/*
+ * 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.kv
import org.apache.isis.client.kroviz.core.event.EventStore
@@ -83,7 +101,7 @@ class ColumnFactory {
UiManager.displayModel(tObject)
}
val logEntry = EventStore.find(tObject)!!
- b.setDragDropData(Constants.format, logEntry.url)
+ b.setDragDropData(Constants.stdMimeType, logEntry.url)
return b
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/Constants.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/Constants.kt
index ad898e8..de40b39 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/Constants.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/Constants.kt
@@ -1,9 +1,28 @@
+/*
+ * 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.kv
object Constants {
- const val format = "text/plain"
- const val calcHeight = "calc(100vh - 128px)"
+ const val stdMimeType = "text/plain"
+ const val svgMimeType = "image/svg+xml"
+ const val calcHeight = "calc(100vh - 88px)"
const val actionSeparator = "\n"
const val subTypeJson = "json"
const val subTypeXml = "xml"
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 9e5fa0d..e702fb9 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
@@ -1,3 +1,21 @@
+/*
+ * 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.kv
import org.apache.isis.client.kroviz.core.event.LogEntry
@@ -66,7 +84,7 @@ class EventLogTable(val model: List<LogEntry>) : VPanel() {
style = ButtonStyle.LINK).onClick {
console.log(data)
}
- if (data.obj is TObject) b.setDragDropData(Constants.format, data.url)
+ if (data.obj is TObject) b.setDragDropData(Constants.stdMimeType, data.url)
return b
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/GeoMap.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/GeoMap.kt
index 933e7db..7b026c2 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/GeoMap.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/GeoMap.kt
@@ -1,18 +1,88 @@
+/*
+ * 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.kv
+import org.apache.isis.client.kroviz.utils.IconManager
+import pl.treksoft.kvision.core.CssSize
+import pl.treksoft.kvision.core.UNIT
+import pl.treksoft.kvision.html.Button
+import pl.treksoft.kvision.html.ButtonStyle
+import pl.treksoft.kvision.maps.LatLng
import pl.treksoft.kvision.maps.maps
-import pl.treksoft.kvision.panel.SimplePanel
+import pl.treksoft.kvision.panel.HPanel
import pl.treksoft.kvision.utils.pc
-import pl.treksoft.kvision.utils.vh
-// see -> kvision-kvision-maps.js
-// for 2.5D, buildings see https://osmbuildings.org/documentation/leaflet/
-class GeoMap : SimplePanel() {
+/**
+ * Sample to be called from RoMenuBar
+ */
+class GeoMap : HPanel() {
init {
- maps(53.65425, 10.1545, 15) {
+ val m = maps(53.65425, 10.1545, 15) {
width = 100.pc
- height = 89.vh
+ height = 100.pc
+ }
+
+ val home = LatLng(53.65425, 10.1545)
+ m.addMarker(home, "Home")
+
+ val office = LatLng(53.5403735, 10.0008355)
+ m.addMarker(office, "Work<br><a href='https://en.wikipedia.org/wiki/Kuehne_%2B_Nagel'>KN</a>")
+
+ val reha = LatLng(53.6824359, 10.7661037)
+ m.addMarker(reha)
+
+ RoIconBar.add(createLocationIcon())
+
+ setDropTargetData(Constants.stdMimeType) { id ->
+ val mrk = parseMarker(id!!)
+ if (mrk != null) m.addMarker(mrk.latLng, mrk.title)
}
}
+
+ private fun createLocationIcon(): Button {
+ val loc = Button(
+ text = "",
+ icon = IconManager.find("Location"),
+ style = ButtonStyle.LIGHT).apply {
+ padding = CssSize(-16, UNIT.px)
+ margin = CssSize(0, UNIT.px)
+ title = "Drag icon to map"
+ }
+ val location = "52.36393568#4.90446422#Zoku"
+ loc.setDragDropData(Constants.stdMimeType, location)
+ return loc
+ }
+
+
+
+ private fun parseMarker(id: String): Marker? {
+ val raw = id.split("#")
+ if (raw.isNotEmpty()) {
+ val lat = raw[0].toDouble()
+ val lng = raw[1].toDouble()
+ val latLng = LatLng(lat, lng)
+ val title = if (raw.size >= 2) raw[2] else "no title set"
+ return Marker(latLng, title)
+ } else return null
+ }
+
+ class Marker(val latLng: LatLng, val title: String)
+
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/MenuFactory.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/MenuFactory.kt
index 806eb9f..9c5c16c 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/MenuFactory.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/MenuFactory.kt
@@ -1,3 +1,21 @@
+/*
+ * 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.kv
import org.apache.isis.client.kroviz.core.aggregator.ActionDispatcher
@@ -54,7 +72,7 @@ object MenuFactory {
style = style,
classes = classes,
forNavbar = false)
- //dd.setDragDropData(Constants.format, menuTitle)
+ //dd.setDragDropData(Constants.stdMimeType, menuTitle)
// action.setDragDropData gets always overridden by dd.setDragDropData
menu.section.forEachIndexed { index, section ->
section.serviceAction.forEach { sa ->
@@ -62,7 +80,7 @@ object MenuFactory {
action.onClick {
ActionDispatcher().invoke(sa.link!!)
}
- action.setDragDropData(Constants.format, action.id!!)
+ action.setDragDropData(Constants.stdMimeType, action.id!!)
dd.add(action)
}
if (index < menu.section.size - 1) {
@@ -121,7 +139,7 @@ object MenuFactory {
icon = IconManager.find(label),
classes = IconManager.findStyleFor(label))
val id = "$menuTitle${Constants.actionSeparator}$actionTitle"
- actionLink.setDragDropData(Constants.format, id)
+ actionLink.setDragDropData(Constants.stdMimeType, id)
actionLink.id = id
return actionLink
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoApp.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoApp.kt
index 85fe59c..bb04a8e 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoApp.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoApp.kt
@@ -1,13 +1,34 @@
+/*
+ * 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.kv
import pl.treksoft.kvision.panel.HPanel
import pl.treksoft.kvision.panel.SimplePanel
+import pl.treksoft.kvision.utils.pc
object RoApp : SimplePanel() {
init {
this.add(RoMenuBar.navbar)
- val view = HPanel()
+ val view = HPanel(classes = setOf("main")) {
+ width = 100.pc
+ }
view.add(RoIconBar.panel)
view.add(RoView.tabPanel)
this.add(view)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoDialog.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoDialog.kt
index 087de98..2210380 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoDialog.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoDialog.kt
@@ -36,7 +36,6 @@ import pl.treksoft.kvision.panel.FlexJustify
import pl.treksoft.kvision.panel.HPanel
import pl.treksoft.kvision.panel.vPanel
import pl.treksoft.kvision.utils.perc
-import pl.treksoft.kvision.utils.px
class RoDialog(
caption: String,
@@ -95,12 +94,9 @@ class RoDialog(
add(formPanel!!, grow = 2)
- val buttonBar = HPanel(spacing = 10) {
- id = "button-bar"
- marginTop = 10.px
- marginLeft = 10.px
- marginBottom = 12.px
- }
+ val buttonBar = HPanel(
+ spacing = 10,
+ classes = setOf("button-bar"))
buttonBar.add(okButton)
buttonBar.add(cancelButton)
if (items.isNotEmpty() && hasScalableContent()) {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoIconBar.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoIconBar.kt
index 77dbf9e..c626d84 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoIconBar.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoIconBar.kt
@@ -1,3 +1,21 @@
+/*
+ * 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.kv
import org.apache.isis.client.kroviz.core.event.EventStore
@@ -27,7 +45,7 @@ object RoIconBar : SimplePanel() {
panel.addCssClass("icon-bar")
panel.title = "Drop objects, factories, or actions here"
this.add(createDeleteIcon())
- panel.setDropTargetData(Constants.format) { id ->
+ panel.setDropTargetData(Constants.stdMimeType) { id ->
when {
Utils.isUrl(id!!) ->
this.add(createObjectIcon(id)!!)
@@ -40,7 +58,7 @@ object RoIconBar : SimplePanel() {
hide()
}
- private fun add(icon: SimplePanel) {
+ fun add(icon: SimplePanel) {
icons.add(icon)
panel.add(icon)
}
@@ -70,7 +88,7 @@ object RoIconBar : SimplePanel() {
margin = CssSize(0, UNIT.px)
title = "Drop icon here in order to remove it"
}
- del.setDropTargetData(Constants.format) {
+ del.setDropTargetData(Constants.stdMimeType) {
icons.forEach { ii ->
if (ii.id == it) {
icons.remove(ii)
@@ -124,7 +142,7 @@ object RoIconBar : SimplePanel() {
cssClass: String,
btnId: String)
: SimplePanel {
- icon.setDragDropData(Constants.format, id)
+ icon.setDragDropData(Constants.stdMimeType, id)
icon.id = id
icon.title = title
icon.addCssClass(cssClass)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoMenuBar.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoMenuBar.kt
index 33e3e11..ed0201c 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoMenuBar.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoMenuBar.kt
@@ -1,3 +1,21 @@
+/*
+ * 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.kv
import org.apache.isis.client.kroviz.core.event.EventStore
@@ -79,11 +97,18 @@ object RoMenuBar : SimplePanel() {
UiManager.add(chartTitle, ChartFactory().build())
}
- val mapTitle = "Sample Map"
- ddLink(mapTitle,
+ val geoMapTitle = "Geo Map"
+ ddLink(geoMapTitle,
icon = IconManager.find("Map")
).onClick {
- UiManager.add(mapTitle, GeoMap())
+ UiManager.add(geoMapTitle, GeoMap())
+ }
+
+ val svgMapTitle = "Sample SVG Map"
+ ddLink(svgMapTitle,
+ icon = IconManager.find("Diagram")
+ ).onClick {
+ UiManager.add(svgMapTitle, SvgMap())
}
}
}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoStatusBar.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoStatusBar.kt
index 908d98c..cc17cb2 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoStatusBar.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoStatusBar.kt
@@ -4,9 +4,9 @@ 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.model.DiagramDM
import org.apache.isis.client.kroviz.ui.ClassDiagram
-import org.apache.isis.client.kroviz.utils.IconManager
import org.apache.isis.client.kroviz.ui.ImageDialog
import org.apache.isis.client.kroviz.ui.NotificationDialog
+import org.apache.isis.client.kroviz.utils.IconManager
import pl.treksoft.kvision.core.*
import pl.treksoft.kvision.html.Button
import pl.treksoft.kvision.html.ButtonStyle
@@ -16,11 +16,9 @@ import pl.treksoft.kvision.navbar.NavbarType
import pl.treksoft.kvision.panel.SimplePanel
object RoStatusBar {
- val navbar = Navbar(type = NavbarType.FIXEDBOTTOM) {
- height = CssSize(8, UNIT.mm)
- minHeight = CssSize(8, UNIT.mm)
- width = CssSize(100, UNIT.perc)
- }
+ val navbar = Navbar(
+ type = NavbarType.FIXEDBOTTOM,
+ classes = setOf("status-bar"))
private val nav = Nav(rightAlign = true)
private val userBtn: Button = buildButton("", "Me", ButtonStyle.OUTLINEWARNING)
private val umlDiagram = buildButton("", "Diagram", ButtonStyle.OUTLINEWARNING)
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoTabPanel.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoTabPanel.kt
index 9f3bfe0..8a7c71e 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoTabPanel.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoTabPanel.kt
@@ -1,3 +1,21 @@
+/*
+ * 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.kv
import pl.treksoft.kvision.core.CssSize
@@ -5,11 +23,13 @@ import pl.treksoft.kvision.core.UNIT
import pl.treksoft.kvision.panel.SimplePanel
import pl.treksoft.kvision.panel.TabPanel
import pl.treksoft.kvision.panel.VPanel
+import pl.treksoft.kvision.utils.pc
class RoTabPanel : TabPanel() {
init {
- this.width = CssSize(100, UNIT.perc)
+ width = 100.pc
+ marginTop = CssSize(40, UNIT.px)
}
override fun removeTab(index: Int): TabPanel {
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 356f0cb..2af92e3 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
@@ -1,3 +1,21 @@
+/*
+ * 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.kv
import org.apache.isis.client.kroviz.core.model.Exposer
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoView.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoView.kt
index b51b229..cd32a32 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoView.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/RoView.kt
@@ -1,7 +1,27 @@
+/*
+ * 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.kv
import org.apache.isis.client.kroviz.utils.IconManager
-import pl.treksoft.kvision.core.*
+import pl.treksoft.kvision.core.BsBorder
+import pl.treksoft.kvision.core.Component
+import pl.treksoft.kvision.core.addBsBorder
import pl.treksoft.kvision.panel.SimplePanel
/**
@@ -13,10 +33,6 @@ object RoView {
val tabPanel = RoTabPanel()
private var tabCount = 0
- init {
- tabPanel.marginTop = CssSize(40, UNIT.px)
- }
-
fun addTab(
title: String,
panel: Component) {
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/SvgMap.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/SvgMap.kt
new file mode 100644
index 0000000..59ddef7
--- /dev/null
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/ui/kv/SvgMap.kt
@@ -0,0 +1,113 @@
+/*
+ * 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.kv
+
+import org.apache.isis.client.kroviz.utils.ScalableVectorGraphic
+import pl.treksoft.kvision.maps.*
+import pl.treksoft.kvision.panel.SimplePanel
+import pl.treksoft.kvision.utils.pc
+
+class SvgMap : SimplePanel() {
+
+ @Deprecated("pass in as arg")
+ val str = """<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" contentScriptType="application/ecmascript" contentStyleType="text/css"
+ height="203px" preserveAspectRatio="none" style="width:309px;height:203px;" version="1.1" viewBox="0 0 309 203"
+ width="309px" zoomAndPan="magnify">
+ <defs>
+ <filter height="300%" id="f1xj00ih3jrk7f" width="300%" x="-1" y="-1">
+ <feGaussianBlur result="blurOut" stdDeviation="2.0"/>
+ <feColorMatrix in="blurOut" result="blurOut2" type="matrix"
+ values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/>
+ <feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/>
+ <feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/>
+ </filter>
+ </defs>
+ <g><!--MD5=[f621a9b5735c62a9e50fa7c1e42ea0f4]↵cluster domainapp.modules.simple.dom.impl-->
+ <polygon fill="#FFFFFF" filter="url(#f1xj00ih3jrk7f)"
+ points="14,16,277,16,284,38.7999,287,38.7999,287,191,14,191,14,16"
+ style="stroke: #000000; stroke-width: 1.5;"/>
+ <line style="stroke: #000000; stroke-width: 1.5;" x1="14" x2="284" y1="38.7999" y2="38.7999"/>
+ <text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs"
+ textLength="257" x="18" y="31.9999">domainapp.modules.simple.dom.impl
+ </text><!--MD5=[e6e8857f289496579330543e748c2106]↵class SimpleObject-->
+ <rect fill="#FEFECE" filter="url(#f1xj00ih3jrk7f)" height="140.3993" id="SimpleObject"
+ style="stroke: #A80036; stroke-width: 1.5;" width="129" x="85.5" y="43"/>
+ <ellipse cx="112.2" cy="59" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/>
+ <path d="M111.5594,62.7813 Q112.3563,62.7813 112.9266,62.5859 Q113.4969,62.3906 113.7391,62.1641 Q113.9813,61.9375 114.2234,61.7422 Q114.4656,61.5469 114.6844,61.5469 Q115.0281,61.5469 115.2859,61.8047 Q115.5438,62.0625 115.5438,62.3906 Q115.5438,63.125 114.3797,63.8047 Q113.2156,64.4844 111.5125,64.4844 Q109.3563,64.4844 107.9344,63.2188 Q106.5125,61.9531 106.5125,60.0156 L106.5125,58.8906 Q106.5125,56.8594 107.8406,55.4766 Q109.1688,54.0938 111.1375,54.0938 Q112.325,54.0938 113 [...]
+ <text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="71"
+ x="128.8" y="63.8">SimpleObject
+ </text>
+ <line style="stroke: #A80036; stroke-width: 1.5;" x1="86.5" x2="213.5" y1="75" y2="75"/>
+ <line style="stroke: #A80036; stroke-width: 1.5;" x1="86.5" x2="213.5" y1="83" y2="83"/>
+ <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93"
+ x="91.5" y="97.9999">rebuildMetamodel()
+ </text>
+ <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="117"
+ x="91.5" y="111.1998">downloadJdoMetadata()
+ </text>
+ <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="69"
+ x="91.5" y="124.3997">openRestApi()
+ </text>
+ <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="104"
+ x="91.5" y="137.5996">downloadLayoutXml()
+ </text>
+ <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="37"
+ x="91.5" y="150.7995">delete()
+ </text>
+ <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70"
+ x="91.5" y="163.9994">updateName()
+ </text>
+ <text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56"
+ x="91.5" y="177.1993">clearHints()
+ </text><!--MD5=[903507c5920b0ecb2f83cd94e1c42ae5]↵@startuml
+↵package domainapp.modules.simple.dom.impl {
+↵class SimpleObject
+↵SimpleObject : rebuildMetamodel()
+↵SimpleObject : downloadJdoMetadata()
+↵SimpleObject : openRestApi()
+↵SimpleObject : downloadLayoutXml()
+↵SimpleObject : delete()
+↵SimpleObject : updateName()
+↵SimpleObject : clearHints()
+↵}
+↵@enduml
+↵↵PlantUML version 1.2020.04(Thu Mar 19 10:16:49 GMT 2020)↵(GPL source distribution)↵Java Runtime: OpenJDK Runtime Environment↵JVM: OpenJDK 64-Bit Server VM↵Java Version: 1.8.0_191-b12↵Operating System: Linux↵Default Encoding: UTF-8↵Language: en↵Country: US↵-->
+ </g>
+</svg>
+"""
+
+ init {
+ // 0 0 is in the Atlantic Ocean, south of 'towel states' -> blue background
+ val map = maps(0, 0, 11, baseLayerProvider = BaseLayerProvider.EMPTY, crs = CRS.Simple) {
+ width = 100.pc
+ height = 100.pc
+ }
+
+ val svg = ScalableVectorGraphic(str)
+ val svgDoc = svg.document
+ val svgElement = svgDoc.documentElement!!
+
+ val bounds = LatLngBounds(
+ LatLng(0, 0),
+ LatLng(0.1, 0.1))
+ map.svgOverlay(svgElement, bounds)
+ }
+
+}
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/DomHelper.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/DomUtil.kt
similarity index 70%
rename from incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/DomHelper.kt
rename to incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/DomUtil.kt
index 2aa79ee..a13a190 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/DomHelper.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/DomUtil.kt
@@ -1,3 +1,21 @@
+/*
+ * 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.utils
import org.w3c.dom.Element
@@ -9,7 +27,7 @@ external fun encodeURIComponent(encodedURI: String): String
/**
* Dom ^= Document Object Model
*/
-object DomHelper {
+object DomUtil {
fun appendTo(response: String, elementId: String) {
val svgDoc = ScalableVectorGraphic(response).document
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 eb12228..7bb0f74 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
@@ -39,6 +39,7 @@ object IconManager {
"Isis" to "ankh",
"JEE/CDI" to "jedi",
"List" to "list",
+ "Location" to "map-marker",
"Log" to "history",
"Manager" to "manager",
"Map" to "map",
diff --git a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/ScalableVectorGraphic.kt b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/ScalableVectorGraphic.kt
index c22ef59..5ea33f8 100644
--- a/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/ScalableVectorGraphic.kt
+++ b/incubator/clients/kroviz/src/main/kotlin/org/apache/isis/client/kroviz/utils/ScalableVectorGraphic.kt
@@ -18,6 +18,7 @@
*/
package org.apache.isis.client.kroviz.utils
+import org.apache.isis.client.kroviz.ui.kv.Constants
import org.w3c.dom.Document
import org.w3c.dom.parsing.DOMParser
import org.w3c.dom.svg.SVGSVGElement
@@ -29,7 +30,7 @@ enum class Direction(val id: String) {
class ScalableVectorGraphic(val data: String) {
- var document: Document = DOMParser().parseFromString(data, "image/svg+xml")
+ var document: Document = DOMParser().parseFromString(data, Constants.svgMimeType)
private var root: SVGSVGElement
lateinit var viewBox: ViewBox
private var scale: Double = 1.0
diff --git a/incubator/clients/kroviz/src/main/resources/css/kroviz.css b/incubator/clients/kroviz/src/main/resources/css/kroviz.css
index b2e24ed..0035168 100644
--- a/incubator/clients/kroviz/src/main/resources/css/kroviz.css
+++ b/incubator/clients/kroviz/src/main/resources/css/kroviz.css
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
.navbar {
min-height: 24px;
height: 24px;
@@ -36,7 +54,7 @@ div.tabulator-cell {
height: 35px;
}
-div.tabulator-header {
+div.tabulator-header, label.control-label {
font-weight: lighter !important;
font-size: small !important;
}
@@ -65,11 +83,6 @@ div.tabulator-header {
padding: 4px 12px !important;
}
-label.control-label {
- font-weight: lighter !important;
- font-size: small !important;
-}
-
pre.highlight {
margin: 7px 0;
padding: 14px;
@@ -82,7 +95,7 @@ pre.highlight {
.panel-heading {
padding: 3px 15px;
- display: flex;
+ width: 100%;
align-items: center;
justify-content: space-between;
min-height: 3em;
@@ -110,11 +123,14 @@ textarea {
.button-bar {
display: flex;
align-self: baseline !important;
+ margin-top: 10px;
+ margin-left: 10px;
+ margin-bottom: 12px;
}
@font-face {
font-family: Chicago;
- src: url('/fonts/ChicagoFLF.ttf');
+ src: url('../fonts/ChicagoFLF.ttf');
}
div {
@@ -131,16 +147,10 @@ div {
background-position: center center;
background-repeat: no-repeat;
background-size: contain, cover;
+ /*background-image: url(/img/kroviz-logo.svg);*/
background-image: url("https://svn.apache.org/repos/asf/comdev/project-logos/originals/isis.svg");
}
-/*background-image: url("https://www.apache.org/img/ASF20thAnniversary.jpg");*/
-/*background-image: url(https://www.apache.org/logos/res/isis/isis.png);*/
-/*background-image: url(/img/kroviz-logo.svg);*/
-/*background-image: url(https://upload.wikimedia.org/wikipedia/commons/b/b9/SVG_animation_using_SMIL.svg)
-https://svn.apache.org/repos/asf/comdev/project-logos/originals/isis.svg
-*/
-
.kv-window {
/* background-color: rgba(255,255,255, 0) !important;*/
}
@@ -162,7 +172,26 @@ https://svn.apache.org/repos/asf/comdev/project-logos/originals/isis.svg
.icon-bar {
margin-top: 40px;
width: 40px;
- height: calc(100vh - 80px);
+ height: calc(100vh - 88px);
scroll-behavior: auto;
background: GHOSTWHITE;
}
+
+.status-bar {
+ height: 34px;
+ width: 100%;
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+}
+
+html {
+ overflow: hidden;
+}
+
+.leaflet-container {
+ height: calc(100vh - 88px) !important;
+}
+
+.nav .nav-tabs {
+ width: 100% !important;
+}