Release Notes 4.20

What’s New

Long Term Security Support (LTSS)

Mit dieser Version wird ein sogenannter Long Term Security Support eingeführt. Die Version map.apps 4.20 ist die erste Version, die als LTSS-Release gekennzeichnet wird. Weitere Informationen hierzu erhalten Sie auf der Seite Long Term Security Support (LTSS).

App-Editor und Manager

Um die Konfiguration von Apps zu vereinfachen, können im App-Editor jetzt die Metadaten eines Karten-Dienstes automatisch abgerufen und aktualisiert werden. Außerdem erhält man eine Warnung, wenn IDs doppelt vergeben werden. Um die initiale Kartenansicht einfach und intuitiv festzulegen, können Sie jetzt ein Fenster mit einer Karten- oder 3D-Ansicht öffnen und dort die gewünschte Ansicht definieren.

Domain Bundles können jetzt im map.apps Manager und somit direkt im Webbrowser editiert und gespeichert werden. Ein Umweg über den Export und neuen Import des bearbeiteten Bundles entfällt somit.

Alle in der Datenbank gespeicherten Bundles können nun über die Manager-Oberfläche exportiert werden.

Koordinaten abfragen, suchen und umrechnen

Mit diesem Release wurde ein neues Bundle eingeführt, das Esris Coordinate Conversion Widget ersetzt. Es erlaubt die komfortable Umrechnung, Suche und Abfrage von Koordinaten in unterschiedlichen Formaten. Beim Verwenden des Koordinaten-Picker-Werkzeugs werden keine Popups mehr geöffnet, um ein ungestörtes Arbeiten zu ermöglichen.

Editing

Ab diesem Release ist es möglich, beim Editieren von Geoobjekten mehrere Objekte gleichzeitig zu bearbeiten oder zu löschen ("Bulk Editing"). Außerdem können verschiedene Zeichen-Werkzeuge bei der Erstellung von Geometrien genutzt werden. Bevor ein neues Objekt erstellt wird, kann es als Entwurf gespeichert werden, sodass zunächst weitere Objekte angelegt und erst später im Kartendienst gespeichert werden können.

Darüber hinaus können jetzt alle supportingWidgetDefaults-Einstellungen vollständig konfiguriert werden, um das Verhalten der Editierwerkzeuge noch präziser anzupassen.

Result Center

Das Result Center wurde im Hinblick auf Barrierefreiheit verbessert (siehe folgender Abschnitt). Zusätzlich werden Geometrieinformationen als Spalten unterstützt, und URLs in Ergebnistabellen werden jetzt automatisch als anklickbare Links dargestellt. Für Felder mit dem Render-Typ „link“ kann ein individuelles Link-Label konfiguriert werden. Die Darstellung ausgewählter Objekte nutzt nun die Esri Highlight API für ein konsistentes Verhalten in 2D und 3D und eine bessere Performance.

Accessibility

Als Teil unserer fortlaufenden Anstrengungen Anwendungen so zugänglich wie möglich zu machen, werden mit diesem Release folgende Verbesserungen eingeführt:

  • Besseres Fokus-Highlighting für Werkzeugsets vom Typ Menü oder Menüleiste

  • Apps können im map.apps Manager per Tastatur gestartet werden

  • Verbesserte aria-Attribute in verschiedenen Modulen (u.a. Result Center, DataView, Suchvorschläge)

  • Screenreader-Hinweis, wenn Suchvorschläge in der Suche verfügbar sind

  • aria-Unterstützung für Checkboxen und Menüs (z. B. aria-checked in ShrinkingDropdownMenus)

  • Tooltips werden beim Fokussieren von Elementen angezeigt

  • Notifier-Komponenten sind besser mit der Tastatur bedienbar

Weitere Neuerungen

  • Die technische Basis von map.apps wurde auf ArcGIS Maps SDK for JavaScript Version 4.33 aktualisiert. Dies bringt zahlreiche Verbesserungen und Fehlerbehebungen mit sich.

  • Die neue Konfigurationsoption config.directory.location ermöglicht die Angabe eines alternativen Verzeichnisses für die application.properties. Der Standardwert zeigt auf den gleichen Pfad wie die Konfigurationsoption data.directory.location. Mit Hilfe der neuen Option können Sie das Konfigurationsverzeichnis config.directory.location vom Arbeitsverzeichnis data.directory.location der Anwendung trennen.

  • Die Konfigurationsdatei ${config.directory.location}/secrets.properties wird nun standardmäßig geladen. Es ist nicht mehr notwendig, die Datei in der application.properties per include ./secrets.properties zu referenzieren.

  • Mit diesem Release wird die Unterstützung für Tomcat 11 und Java 25 eingeführt. Gleichzeitig entfällt die Unterstützung für Java 17.

  • Es wurde eine neue Layer Visibility Tracking und Calculation API eingeführt, mit der sich Sichtbarkeiten und Zustände von Karten-Layern effizient nachverfolgen und ermitteln lassen.

  • Der AutoStoreRegistration-Mechanismus wurde verbessert: Basemaps werden nicht mehr automatisch registriert und die Option suggestContains: false wird unterstützt.

  • In Popups können jetzt Standardaktionen definiert werden. Außerdem kann man benutzerdefinierte Aktionen für Portal-Item-Layer festlegen. Zudem kann über eine neue Option das initiale Anzeigeverhalten (initialDisplayMode) von Popups gesteuert werden.

  • Die Basiskarte für Standardberichte (Reports) kann nun über eine Basemap-URL konfiguriert werden.

  • Im Bundle search-ui kann nun eine minimale Eingabelänge für Suchbegriffe konfiguriert werden. Zudem werden überflüssige returnCountOnly-Requests vermieden, was die Performance verbessert.

  • Die Reihenfolge der Auswahlwerkzeuge (selection-ui) kann jetzt frei konfiguriert werden.

Update-Hinweise

Falls Sie bei dem Update mehrere Versionen überspringen, befolgen Sie bitte auch alle Update-Hinweise der dazwischenliegenden Versionen.

Bundle-Umbenennung 'esri' → '@arcgis/core'

In Synchronisation mit dem ArcGIS Maps SDK für JavaScript wurde das Bundle namens esri in @arcgis/core umbenannt. Daher müssen Sie die Imports im Code Ihrer eigenen Bundles entsprechend ändern.

Ändern Sie zum Beispiel in Ihren JavaScript- bzw. TypeScript-Dateien:

import Layer from "esri/layers/Layer";

zu

import Layer from "@arcgis/core/layers/Layer";

Und in Ihren manifest.json-Dateien:

{
    // ...
    "dependencies": {
        "esri": "~x.y.z"
    }
}

zu

{
    // ...
    "dependencies": {
        "@arcgis/core": "~x.y.z"
    }
}

Um Sie bei der Migration zu unterstützen, werden im map.apps Rollout einige Skripte bereitgestellt.

Bundle 'apprt-request' entfernt

Das Bundle apprt-request wurde entfernt. Es war seit map.apps 4.14 abgekündigt.

Benutzen Sie stattdessen apprt-fetch, um HTTP-Anfragen abzusetzen, zum Beispiel:

Beispiel für HTTP Request
import { apprtFetch } from "apprt-fetch";

const response = await apprtFetch("https://example.org/get");

Theming

Durch den Wegfall des Bundles omnisearch sind die dazugehörigen LESS Variablen aus den map.apps Themes entweder entfernt oder umbenannt worden. Dies betrifft die folgenden Variablen, welche in der Datei themeSettings.less definiert sind:

  • @ct-omnisearch-input-background-color

  • @ct-omnisearch-input-text-color

  • @ct-omnisearch-result-list-hover-color

  • @ct-omnisearch-drawer-button-background-color

  • @ct-omnisearch-drawer-button-icon-color

Um ein eigenes Theme oder eine Theme-Extension anzupassen, gehen Sie wie folgt vor:

Schritt 1: Anpassen der themeSettings.less Datei

Öffnen Sie die Datei themeSettings.less in Ihrem Theme oder Ihrer Theme-Extension.

Fügen Sie folgende Variablendefinitionen hinzu:

  • @ct-inverted-background-color: #ffffff;

  • @ct-inverted-text-color: #000000;

Löschen Sie die folgenden Variablendefinitionen:

  • @ct-omnisearch-input-background-color

  • @ct-omnisearch-input-text-color

Benennen Sie folgenden Variablen Definitionen um:

  • @ct-omnisearch-result-list-hover-color@ct-search-ui-result-list-hover-color

  • @ct-omnisearch-drawer-button-background-color@ct-drawer-button-background-color

  • @ct-omnisearch-drawer-button-icon-color@ct-drawer-button-icon-color

Schritt 2: Austauschen der entfernten Variablen

Dieser Schritt ist nur notwendig, wenn Sie eigene *.less Dateien geschrieben haben.

Suchen Sie nach Vorkommen der alten Variablen in Ihren *.less-Dateien und ersetzen Sie sie durch die entsprechenden neuen Variablen.

Alter Name

Neuer Name

@ct-omnisearch-input-background-color

@ct-inverted-background-color

@ct-omnisearch-input-text-color

@ct-inverted-text-color

@ct-omnisearch-result-list-hover-color

@ct-search-ui-result-list-hover-color

@ct-omnisearch-drawer-button-background-color

@ct-drawer-button-background-color

@ct-omnisearch-drawer-button-icon-color

@ct-drawer-button-icon-color

Abbruch von Store-Abfragen

Die Unterstützung für die cancel()-Methode von Ergebnisobjekten, die von einem Store zurückgegeben werden (QueryResults), wurde entfernt. Die Funktion war seit map.apps 4.15. abgekündigt.

Benutzen Sie stattdessen den Standard AbortController , um Abfragen abzubrechen. Zum Beispiel:

Aborting a store query
const aborter = new AbortController();
store.query(
    { name: "Test" },
    { signal: aborter.signal }
).then((resultItems ) => {
    // ...
}, (e) => {
    if (e.name === "AbortError"){
        // aborted
    }
});
// trigger abort
aborter.abort();

Konfigurationsoption configuration.watch.changes

Der Standard-Wert für die Konfigurationsoption configuration.watch.changes wurde auf false gesetzt. Die Option ist abgekündigt und es wird empfohlen, die Option nicht mehr zu verwenden (siehe Abkündigungen). Sollten Sie dennoch das vorherige Verhalten wieder herstellen wollen, setzen Sie die Option explizit auf true.

Unnötige Referenz in Konfiguration entfernen

Die Konfigurationsdatei ${config.directory.location}/secrets.properties wird nun standardmäßig geladen. Die Angabe include ./secrets.properties in den application.properties kann entfernt werden.

Entfernung der Logstash-Unterstützung in der service.monitor Analytics-Integration

Die Unterstützung für Logstash in der service.monitor Analytics-Integration wurde entfernt. Daher müssen einige Konfigurationseigenschaften entfernt werden.

Ab dieser Version ist service.monitor ab der Version 4.10 erforderlich, der Ingest-Pipelines anstelle von Logstash verwendet.

Entfernen Sie in Ihren eigenen application.properties, sofern vorhanden, die folgenden Eigenschaften:

### Diese Einträge können entfernt werden

analytics.gelf.host=localhost
analytics.gelf.port=12201
analytics.gelf.protocol=udp

Ändern Sie außerdem den folgenden Eintrag:

# Diese Eigenschaft ist jetzt standardmäßig auf 'elastic' statt 'gelf' gesetzt
analytics.messengerType=elastic

Ergänzen Sie stattdessen die folgenden Einträge:

analytics.elastic.url=https://elasticsearch.example.com
analytics.elastic.username=username
analytics.elastic.password=password

Ausgelaufene Unterstützung

  • Bundles:

    • Das Bundle omnisearch wurde entfernt. Es war seit map.apps 4.12 abgekündigt. Verwenden Sie stattdessen das Bundle search-ui.

    • Die Bundles resultcenter und selection-resultcenter wurden entfernt. Sie waren seit map.apps 4.14 abgekündigt. Verwenden Sie stattdessen das Bundle result-ui. Die alten Bundles sind noch im con terra Developer Network verfügbar.

    • Das Bundle apprt-request wurde entfernt. Es war seit map.apps 4.14 abgekündigt. Verwenden Sie stattdessen das Bundle apprt-fetch.

  • Die Klasse apprt-core/Observable wurde entfernt. Sie basierte auf einem veralteten Entwurf des JavaScript-Observable -Proposals, der jedoch abgelehnt wurde.

  • Die Unterstützung von cancel in der Rückgabe der Abfrageergebnisse (QueryResult) eines Stores wurde entfernt.

  • Die Unterstützung für die GeometryService-Strategie wurde aus dem coordinatetransformer-Bundle entfernt. Nutzen Sie die anderen verfügbaren Strategien (Projection Engine, Proj4js) oder implementieren Sie eine angepasste Strategie auf Basis der CustomTransformerStrategy-Schnittstelle.

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 Konfigurationsoption configuration.watch.changes wird mit dem nächsten Release entfernt. Die dynamische Anwendung von Konfigurationsänderungen hat in verschiedenen Fällen zu Problemen geführt, die zu einer instabilen Anwendung führen konnten. Der Standardwert dieser Option wird auf false gesetzt und empfohlen die Option nicht mehr zu verwenden.

  • map.apps Manager und App-Konfiguration:

    • Die Live-Konfiguration wird nicht mehr weiterentwickelt und wird in einer der kommenden Versionen entfernt. Verwenden Sie stattdessen den App-Editor zur Konfiguration von Apps. Sie können die Live-Konfiguration bereits jetzt für Ihre Nutzer ausblenden, indem Sie die Konfigurations-Option manager.config.editor.showLiveConfigButton auf false setzen.

    • Die Konfigurationsoption config.view.navigation.mouseWheelZoomEnabled im Bundle map-init wird demnächst entfernt.

  • Entwicklung:

    • Die Unterstützung der JavaScript Module test-utils/later und test-utils/waitForProperty wird demnächst entfernt. Benutzen Sie stattdessen das neue Modul test-utils/waitFor.

    • Die Unterstützung von module.exports in JavaScript-Dateien wird demnächst entfernt. Verwenden Sie stattdessen die ECMA­Script-Schlüsselwörter export oder export default.

    • Um eine zukünftige Migration von AMD zu einem anderen Modulsystem zu vereinfachen, sollten JavaScript-Dateien nach Möglichkeit nur als ECMAScript-Module geschrieben und dann transpiliert werden.

    • 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

Bekannte Einschränkungen

MAPAPPS-5654

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

Abhängigkeiten

  • Esri ArcGIS Maps SDK for JavaScript 4.33.14

  • ArcGIS Arcade 1.32

  • JasperReports 6.21.5

  • Moment.js 2.29.4

  • Vue.js 2.7.16

  • Vuetify.js 1.5.24 (with custom patches, tracked as 1.5.37)

Changelog

4.20.2

Fixed Issues

MAPAPPS-7539

[Performance] Limited performance when using editing widget and feature layer

MAPAPPS-7537

X-Forwarded-For headers with ports are rejected

MAPAPPS-7536

[Map] TileLayer without sub layers cannot be added to map

MAPAPPS-7534

[TOC] Actions not shown under certain conditions

MAPAPPS-7532

[Map] Type error related to view.extent in new MapState API

MAPAPPS-7531

[portal-security] Request errors on credential object in combination with Identity Service

MAPAPPS-7528

[Popups] popupEnabled is not applied to "parent" sublayers

MAPAPPS-7525

[basemaptoggler] Name of selected basemap not visible initially when using domain bundle

MAPAPPS-7524

[Manager] Editor does not support collapsing JSON content in large files

4.20.1

Diese Version wurde aus technischen Gründen nicht veröffentlicht.

4.20.0

New Features

MAPAPPS-7411

[Accessibility] Add aria-label to header of actions column in result-ui

MAPAPPS-7484

[Accessibility] Add hint for screenreader that search suggestions are available in search-ui

MAPAPPS-7452

[Accessibility] Add i18n support for aria-label of filter DropDown in DataView

MAPAPPS-7443

[Accessibility] Add more context to selection checkboxes for screen reader in result-ui

MAPAPPS-7480

[Accessibility] Add visual highlight for focused tool in a Menu or Menubar toolset

MAPAPPS-7501

[Accessibility] Allow to focus app launch button in manager by keyboard

MAPAPPS-7437

[Accessibility] Support aria-checked attribute for assistive technology in ShrinkingDropdownMenus

MAPAPPS-7354

[agssearch] Support suggestContains: false in AutoStoreRegistration

MAPAPPS-7413

[App Editor] "Refresh/Import metadata" code lens

MAPAPPS-6057

[App Editor] Check for duplicated layer IDs

MAPAPPS-7398

[App Editor] Define initial view in map window

MAPAPPS-7327

[App Editor] Make notifier look less offset

MAPAPPS-7490

[AutoStoreRegistration] Do not register stores for basemaps by default

MAPAPPS-5389

[Coordinate Conversion] Prevent opening popups while using coordinate picker tool

MAPAPPS-7416

[CoordinateConversion] Introduce bundle to replace Esri’s Coordinate Conversion Widget

MAPAPPS-7485

[Coordinatetransformer] Drop support for GeometryService

MAPAPPS-6213

[Domain Bundles] Allow to edit domain bundle in map.apps Manager

MAPAPPS-7502

[domains-system] Allow the identification of the source domain bundle for each layer

MAPAPPS-7451

[Editing] Allow configuration of all supportingWidgetDefaults settings

MAPAPPS-7415

[IntegrationAPI] Automatically register integration api as global variable

MAPAPPS-3216

[Manager] Allow to export bundle

MAPAPPS-4902

[Map APIs] Layer Visibility Tracking and Calculation API

MAPAPPS-7454

[Map] Implement support for navigation.actionMap

MAPAPPS-7481

[Notifier] Improve accessibility of buttons inside notifier

MAPAPPS-6356

[Popup] Allow to create default actions

MAPAPPS-7390

[Popups] Allow custom actions for portal item layers with predefined popupTemplate

MAPAPPS-7457

[Popups] Allow to set initialDisplayMode

MAPAPPS-7467

[Reporting] Configure basemap url for default report

MAPAPPS-7258

[result-api] Provide support for columns displaying information about geometry data

MAPAPPS-7489

[result-api] Use Esri highlight API

MAPAPPS-7469

[result-ui] Show URLs as clickable links automatically

MAPAPPS-7465

[result-ui] Specify link label for fields of renderType "link"

MAPAPPS-7355

[search-ui] Configure minimum input length

MAPAPPS-7352

[search-ui] Omit unnecessary returnCountOnly requests

MAPAPPS-5232

[selection-ui] Configure order of selection tools

MAPAPPS-7391

[System] Update ArcGIS Maps SDK for JavaScript to version 4.33

MAPAPPS-7172

[Vuetify] Show tooltips by default if activator receives focus

MAPAPPS-7385

Add support for DHHN2016

MAPAPPS-7476

Define stronger default CSP header

MAPAPPS-7431

Introduce "config.directory.location" to separate writable directories and static configuration files

MAPAPPS-7430

Introduce general "secrets.properties" as special configuration file

MAPAPPS-7384

Remove apprt-core/Observable

MAPAPPS-7478

Split too long bundle requests into multiple ones if POST request is not possible

Fixed Issues

MAPAPPS-7435

"apprt-vue/directives/clipboard" steals focus when calling "copyText"

MAPAPPS-7493

[Accessibility] Focus lost after search-result item selection

MAPAPPS-7482

[Accessibility] Lack of screenreader support for selected toolitem in menu toolset

MAPAPPS-7439

[Accessibility] Screenreader recognizes invisible loading bars in TOC

MAPAPPS-7434

[Accessibility] Wrong order for keyboard navigation when using collapsed toolsets

MAPAPPS-7397

[ct-jsregistry-maven-plugin] scanPackagesIncludes does not find configured files

MAPAPPS-7449

[Editing] Not all visibleElements are configurable

MAPAPPS-7514

[locateme] Position display limited for EPSG:3857 and missing for other CRS

MAPAPPS-7504

[Manager] Bundles in bundle list stay selected although selection reset by user

MAPAPPS-7500

[Manager] Focus displayed and jumping to arbitrary tab on mouse click

MAPAPPS-7491

[Mutable/Reactivity] Setting a mutable property in a reactive effect throws "Cycle Detected" error

MAPAPPS-7523

[parametermanager] Home button not working when launching with different view mode via URL parameter

MAPAPPS-7466

[Performance] Limited performance when using measurement widget and feature layer

MAPAPPS-7471

[Printing] Printpreview frame still shown when printing widget is closed

MAPAPPS-7474

[Reporting] security.ssl.trustAny is not used to fetch remote image data

MAPAPPS-7506

[result-api] BulkAction not informed about selection reset after table switch

MAPAPPS-7518

[result-ui] Order of actions not stable

MAPAPPS-7505

[result-ui] Table rows with objectID 0 not highlighted when focused

MAPAPPS-6802

[SceneView] Non-visible WMS layer contained in group layer is displayed during initialization of a scene

MAPAPPS-7517

[Theming] Insufficient color contrast in v-expansion-panel

MAPAPPS-7479

[Toolbars] Missing key event handling to use up/down arrow keys for vertical navigation