Release Notes 4.13

What’s New

Authentifizierung mit ArcGIS Enterprise Portal oder ArcGIS Online

Sie können eine map.apps Installation nun vollständig mit ArcGIS Enterprise Portal oder ArcGIS Online koppeln. Dadurch können sich Nutzerinnen und Nutzer mit ihrem Portal- oder ArcGIS Online-Account über das OAuth 2.0 Protokoll bei map.apps anmelden. Die zugeordneten Portal-Gruppen und Portal-Rollen werden in Rollen für map.apps übersetzt. Mit Hilfe dieser Rollen kann dann der Zugang zum map.apps Manager, zu einzelnen Apps oder bestimmten Werkzeugen gesteuert werden. Außerdem können nicht öffentliche Inhalte wie Webmaps oder Layer ohne erneute Anmeldung (Single Sign-On) genutzt werden.

Authentifizierung mit Keycloak (via OpenID Connect)

Alternativ zur Kopplung mit ArcGIS gibt es nun auch die Möglichkeit, Ihre map.apps Installation mit Keycloak zu verbinden. Mit Hilfe der in Keycloak vergebenen Rollen kann dann der Zugang zum map.apps Manager, zu einzelnen Apps oder bestimmten Werkzeugen gesteuert werden.

Reihenfolge von Suchergebnissen

In map.apps 4.12 wurde die Möglichkeit eingeführt, Ergebnisse aus mehreren Suchthemen gleichzeitig in einer Vorschlagliste anzuzeigen. In dieser Version wird nun eine Konfigurationsmöglichkeit eingeführt, um die Reihenfolge der Suchthemen zu definieren. Somit können Sie sicherstellen, dass Ergebnisse aus besonders wichtigen Themen zuerst erscheinen.

Leere Felder in Popups ausblenden

Sie können nun Felder die keine Werte enthalten in einem Popup ausblenden. Für jedes Objekt wird einzeln geprüft, welche Felder mit Werten belegt sind. Die Darstellung von Popups kann damit besonders bei Kartendiensten in denen häufig leere Werte auftreten deutlich kompakter und übersichtlicher gestaltet werden.

Einträge in Karteninhaltsteuerung (TOC) automatisch ausklappen

Mit Hilfe einer neuen Konfigurationsoption können Einträge in der Karteninhaltsteuerung nun automatisch beim Start ausgeklappt angezeigt werden. Dies erleichtert besonders für neue Nutzerinnen und Nutzer das Auffinden von Karteninhalten in tiefer verschachtelten Ebenen.

Verbesserungen zur Barrierearmut (Accessibility)

Um die Zugänglichkeit (Accessibility) von Apps zu steigern, wurden mehrere Verbesserungen vorgenommen. Das Drawer-Menü welches sich i.d.R. links neben der Suche befindet, kann nun besser per Tastatur bedient werden. Außerdem wurden an verschiedenen Stellen sogenannte Aria-Labels ergänzt oder optimiert, um die Nutzungsmöglichkeit von Screenreadern zu verbessern.

Neuerungen für Entwickler

Neue LayerStore Implementierung

In diesem Release wird eine neue Klasse LayerStore eingeführt, die zukünftig die Klasse ct/mapping/store/MapServerLayerStore im agssearch-Bundle ersetzt. Die Klasse LayerStore wird mit einer ArcGIS FeatureLayer Instanz hinterlegt und ist daher konsistent mit dem Inhalt der Karte (zum Beispiel bei der Anwendung von Definition Queries). Das agssearch-Bundle erzeugt nun standardmäßig LayerStore-Instanzen in der Klasse AGSStoreFactory und den Konfigurationsoptionen AutoStoreRegistration und AGSStore.

Weitere neue Funktionen und Verbesserungen

  • Die von map.apps als technische Basis genutzte ArcGIS API for JavaScript wird mit diesem Release auf die Version 4.22 aktualisiert. Dies führt zu zahlreichen Verbesserungen und Fehlerbehebungen in der Basistechnologie.

  • Die Verwendung von Material-Design-Symbolen als Werkzeug-Symbol wurde vereinfacht.

  • Die Bibliothek Proj4js wurde auf Version 2.7.5 aktualisiert.

  • map.apps kann nun unter Java 17 verwendet werden.

  • Der Standardwert von client.config.requestMaxUrlLength wurde auf "2048" reduziert.

  • Das Bundle search-api informiert nun über das Event-System über das ausgewählte Suchergebnis.

  • Der map.apps Proxy unterstützt jetzt Bearer Token basierte Autorisierungen.

Eine komplette Auflistung aller Änderungen finden Sie im Changelog.

Update-Hinweise

Neue Datenbanktabellen

map.apps verwendet die neuen Datenbanktabellen IDENT_EXTSESSIONS, IDENT_SESSIONS und IDENT_TOKENS.

Beginnend mit dieser Version legt map.apps die Tabellen beim Start des Tomcat automatisch an, wenn sie noch nicht existieren und die Einstellung db.hibernate.schemaUpdate=update in der angewendeten Konfigurationsdatei gesetzt ist. Sollten Sie diese Einstellung bislang nicht gesetzt oder verändert haben, müssen Sie keine Änderung vornehmen.

Wenn Sie die Datenbanktabellen stattdessen manuell anlegen möchten, verwenden Sie dafür das entsprechende SQL-Skript für Ihre Datenbank:

Nutzung von ArcGIS-Rollen in map.apps

Sollten Sie bislang Rollen, die aus ArcGIS Enterprise-Portal oder ArcGIS Online Gruppen abgeleitet werden, in map.apps genutzt haben, war dafür bislang die folgende Notation erforderlich: "user@@gruppe". Die Syntax ändert sich mit diesem Release zu "gruppe::user".

Werkzeuge in der DockingBar im Footer sind nicht mehr per default in einer Toggle-Gruppe. Wenn sie nicht gleichzeitig geöffnet werden sollen, müssen sie einer Gruppe zugeordnet werden.

Ausgelaufene Unterstützung

Die Unterstützung für die folgenden Funktionen ist mit diesem Release ausgelaufen:

  • Java 8 — Mit dieser Version ist der Betrieb mit einer Java JRE 8 nicht mehr unterstützt. Wir empfehlen die Nutzung von Java 17.

  • Tomcat 8.5 —  Mit dieser Version ist der Betrieb der Web Applikationen in Tomcat 8.5 nicht mehr unterstützt. Wir empfehlen die Nutzung von Tomcat 9.0.

  • Seit diesem Release sind die Bundles der Linie 3 nicht mehr im Auslieferungsverzeichnis enthalten. Weitere Details zum Lebenszyklus von map.apps Linie 3 können Sie der Lifecycle Übersicht entnehmen.

  • Der Abschnitt "Erweiterte Konfiguration (Bundles)" wurde aus der Live-Konfiguration entfernt.

  • Der eventservice, der in Linie 3 für die Follow Me Funktion benötigt wurde, wurde entfernt.

  • Die Schrift directionsUiFont wurde entfernt.

Abkündigungen

Für folgende Features wird die Weiterentwicklung eingestellt und das Ende der Unterstützung für die Zukunft angekündigt. Beachten Sie außerdem die Hinweise in den Systemanforderungen.

  • Die Klasse ct/mapping/store/MapServerLayerStore wird durch eine neue Klasse LayerStore im agssearch-Bundle ersetzt. Die Klasse LayerStore wird mit einer ArcGIS FeatureLayer Instanz hinterlegt und ist daher konsistent mit der Ansicht. Das agssearch-Bundle erzeugt nun standardmäßig LayerStore-Instanzen in der Klasse AGSStoreFactory und den Konfigurationsoptionen AutoStoreRegistration und AGSStore. Das alte Verhalten kann während der Übergangsphase mit der Option legacyImplementation wiederhergestellt werden.

  • Kompatibilitätsmodus im map.apps Manager

  • Synchronisierung von Apps und App-Vorlagen. Verwenden Sie stattdessen Domain-Bundles.

  • Das Bundle aceeditor wird in einem der kommenden Releases entfernt.

  • Das Bundle omnisearch wird nicht mehr weiterentwickelt. Verwenden Sie stattdessen das Bundle search-ui.

  • Die Verwendung von data-template-window und data-template-window-events in template files wird zukünftig nicht mehr unterstützt. Nehmen Sie stattdessen Fenster-Definitionen in manifest.json Dateien vor.

  • Das Bundle app-uitest-support wird demnächst entfernt.

  • Die folgenden Klassen werden in einem der nächsten Releases entfernt:

Abgekündigte Klasse Alternative

ct/array

native JavaScript Funktionen

ct/async

apprt-core/async

ct/_when

apprt-core/when

ct/_compare

apprt-core/comparators

ct/mapping/store/MapServerLayerStore

AGSStoreFactory.createStore

ct/store/_RestStore

store-api/rest/BaseWriteableRestStore

ct/store/ComplexMemory

store-api/InMemoryStore

ct/store/ComplexQuery

store-api/ComplexQuery

ct/store/ComplexQueryEngine

store-api/utils.createComplexQueryEngine

ct/store/ComplexQueryToRQL

store-api/rest/RQLStore

ct/store/ComplexQueryToSolrQL

store-api/rest/ComplexQueryToSolrQL

ct/store/ComplexQueryToSQL

store-api/rest/ComplexQueryToSQL

ct/store/Filter.filterMetaData

store-api/utils.mergeMetadata

ct/store/RQLStore

store-api/rest/RQLStore

ct/store/SpatialQuery

store-api/SpatialQuery

ct/store/SQLStore

store-api/rest/SQLStore

ct/store/StoreUtil

store-api/utils

ct/ui/controls/mobile/Drawer

-

Bekannte Einschränkungen

MAPAPPS-5654

[Map] Zoom via mousewheel does not allow to zoom to the full max or min extent in some situations

MAPAPPS-6377

[Printing] Printing of line measurement not possible with PrintTask published from ArcMap

Abhängigkeiten

  • Esri ArcGIS API for JavaScript 4.22.2

  • ArcGIS Arcade 1.16

  • Moment.js 2.29.1

  • Vue.js 2.6.14

  • Vuetify.js 1.5.24

Changelog

4.13.1

map.apps was not affected by the vulnerability known as Spring4Shell. However, to be absolutely on the safe side, we have updated the Spring Framework version to 5.3.18 in this version.

MAPAPPS-6325

Update Spring Framework to version 5.3.18

4.13.0

Fixed Security Issues

MAPAPPS-6218

Fix CVE-2021-22060

New Features

MAPAPPS-6144

[Accessibility] Add aria labels to icon buttons

MAPAPPS-6147

[Accessibility] Add aria-disabled to disabled ui elements

MAPAPPS-6129

[agssearch] LayerStore: implement support for feature layers that are not in the map

MAPAPPS-6263

[apprt] Introduce logging API for better control of log output of bundles

MAPAPPS-6228

[Layout] Simplify usage of material design icons as tool-icon

MAPAPPS-6136

[Live Configuration] Remove "Advanced Configuration (Bundles)" section

MAPAPPS-6115

[map.apps Proxy] Support Bearer Token based Authorization

MAPAPPS-6139

[monaco-editor] Update to 0.30.1

MAPAPPS-5903

[Popups] Hide empty values

MAPAPPS-6251

[Portal Integration] Allow custom role mapping via application.properties

MAPAPPS-6164

[Portal Integration] Consume custom services in protected app

MAPAPPS-6163

[Portal Integration] Consume portal items and federated protected services in protected app

MAPAPPS-6243

[Portal Integration] Do not force login when app item is shared with public

MAPAPPS-6214

[Portal Integration] Prepare Maven Plugins for new authentication

MAPAPPS-6205

[search-api] Provide information about selected result

MAPAPPS-6067

[Search] Define order of search stores

MAPAPPS-6223

[Security] Use Keycloak for user management

MAPAPPS-6085

[System] Support Java 17

MAPAPPS-6162

[System] Update ArcGIS API for JavaScript to version 4.22

MAPAPPS-6313

[System] Update jackson-databind to 2.13.2.1 (CVE-2020-36518)

MAPAPPS-6122

[templatelayout] Change default value of property 'WidgetDefinitions._keepWindowOpenState' to true

MAPAPPS-6142

[Templates] Remove toggleMode from dockingBarBottomLeft

MAPAPPS-5375

[TOC] Allow to expand group on start

MAPAPPS-6224

Allow definition of custom setters for injected '_properties'.

MAPAPPS-5986

Provide a store implementation that directly searches on a layer

MAPAPPS-6311

Reduce default value of client.config.requestMaxUrlLength to 2048

MAPAPPS-6152

Remove event service from mapapps web app

MAPAPPS-6178

Update proj4.js to 2.7.X for nadgrid support

Fixed Issues

MAPAPPS-6210

[app-mgmt-service] app.json cannot be loaded with dynamic bundles

MAPAPPS-6217

[apprt-core/Promise] Unhandled promise rejections are not logged

MAPAPPS-6192

[apprt-core] Observers cannot handle recursive calls to clean()

MAPAPPS-6117

[Authentication] Wrong error handling during activation of AuthenticationWidgetController

MAPAPPS-5931

[AutoStoreRegistration] Changing definitionExpression property of a layer is not observed

MAPAPPS-6155

[AutoStoreRegistration] Stores are registered multiple times in some cases

MAPAPPS-6133

[Bundle documentation] Wrong locateme tool ID

MAPAPPS-5677

[Coordinate Viewer] Wrong scale is shown in web mercator projection

MAPAPPS-6120

[ct-proxy] proxy.allowedSSLDNs not working as expected

MAPAPPS-6211

[jsregistry] Version of bundles mangled and changed when uploaded

MAPAPPS-6239

[Legend] Classes are listed in wrong order

MAPAPPS-6220

[Live Configuration] Editor in custom info bundle is blocked by csp restrictions

MAPAPPS-6292

[LoginUI] Missing Aria-Labels for username and password field

MAPAPPS-5787

[Manager] Portal sharing icon gets lost

MAPAPPS-5139

[Map] Configured ground layer throws error in 2D views

MAPAPPS-6050

[map-init] initInvisibleLayerStrategy: on-visible does not work in firefox

MAPAPPS-6130

[MapNavigation] Initial extent not reset correctly

MAPAPPS-6127

[parametersearch] result items not transformed to map spatial reference system

MAPAPPS-6176

[Popups] Custom popup actions are not added again

MAPAPPS-6282

[Portal Registration] Old oauth client id is used if app is re-registered at portal

MAPAPPS-6149

[Resultcenter] Paging wrong for services with different speed

MAPAPPS-6125

[Search / map-actions] Popups do not resolve domain values / coded values

MAPAPPS-6135

[Selection] Error if multiple selections are started fast in a row

MAPAPPS-6279

[TemplateLayout] Standalone exported app does not start in firefox if no files in cache

MAPAPPS-6285

[Templates] Missing template scope for tocWidget definition in template-seasons

MAPAPPS-5683

[Templates] Unexpected closing of windows on browser resize

MAPAPPS-6141

[TOC] Prevent inlining HTML in description

MAPAPPS-6287

[TOC] StateInfoTooltip disappears in Firefox when placing toc on right side

MAPAPPS-6137

[Tools] Child HTML element of a tool uses the same "id" attribute

MAPAPPS-6190

[Toolset] Drawer toolset is not navigatable by keyboard

MAPAPPS-6180

[Toolsets] Collapsed Toolsets are not navigatable via keyboard focus

MAPAPPS-6207

[Toolsets] Toolsets are not drawn / positioned in uncompressed build