Release Notes 4.18
What’s New
Result Center
Feldinhalte formatieren
Für eine optimale Darstellung der angezeigt Ergebnisse können die Inhalte eines Felds nun umfassend formatiert werden. Pro Feld können nun das Datumsformat, die Anzahl der Nachkommastellen und die Anzeige eines Tausendertrennzeichens definiert werden. Mit Hilfe von ArcGIS Arcade Ausdrücken können zudem neue virtuelle Felder ergänzt werden, die z.B. vorhandene Felder formatieren oder miteinander kombinieren. Die Überschrift jeder Datenspalte kann ebenfalls überschrieben werden.
Tabellen-Darstellung optimieren
Die Ausrichtung kann nun pro Feld definiert werden (z.B. rechtsbündig). Außerdem kann die maximale Länge des angezeigten Textes konfiguriert werden. Längere Texte können per Klick weiterhin gelesen werden, stören aber nicht mehr die initiale Darstellung der Tabelle. Die automatische Berechnung der Spaltenbreiten wurde zudem optimiert.
Verbesserte Seitenleiste
Die Seitenleiste, die angezeigt wird wenn Ergebnisse zu mehreren Themen vorhanden sind, lässt sich nun einklappen. Das automatische Verhalten, dass die Seitenleiste gar nicht gezeigt wird, wenn nur Ergebnisse zu einem Thema vorhanden sind, kann deaktiviert werden, so dass die Leiste immer gezeigt wird. Wenn die angezeigten Titel zu lang sind um vollständig dargestellt zu werden, gibt nun ein Tooltip Aufschluss über den kompletten Titel (der vollständige Titel wird außerdem angezeigt, wenn man das Thema anklickt). Eine weitere kleine Verbesserung ist, dass bei erneutem Klick auf ein aktives Thema die Karte auf den Ausschnitt aller Objekte zoomt.
Bulk- und Row-Actions
Mit diesem Release werden zwei neue Row-Actions bereitgestellt:
-
Objekt editieren - Mit dieser Action wird die Editierung des entsprechenden Objekts gestartet. Nach der Bearbeitung werden geänderte Attribut-Werte auch im Result Center aktualisiert.
-
Popup öffnen - Mit dieser Action wird ein Popup für das entsprechende Objekt geöffnet.
Die Platzierung der Row-Actions wurde ebenfalls verbessert. Standardmäßig werden die Actions nun am linken Rand (neben den Checkboxen) angezeigt, um einen schnelleren Zugriff zu erlauben. Das alte Verhalten bei dem die Actions am rechten Bildschirmrand gezeigt wurden, kann per Konfiguration wieder hergestellt werden.
Ebenso optimiert wurde die Darstellung der sog. Bulk-Actions (Actions die sich auf mehrere Objekte beziehen, z.B. CSV-Export). Auf Wunsch wird der ganze zur Verfügung stehende Platz genutzt, um die Actions nebeneinander darzustellen. Nur bei zu wenig Platz wird in diesem Fall ein "Weitere Aktionen"-Menü angezeigt, in dem die weiteren Actions untergebracht werden. Eine feste Unterteilung der direkt und im Untermenü sichtbaren Aktionen ist weiterhin möglich. In Fällen in denen das "Weitere Aktionen"-Menü nur einen Eintrag beinhalten würde, wird diese eine Action direkt anstelle des Menüs angezeigt, da dies gleich viel Platz einnimmt, aber einen Klick spart.
Weitere Verbesserungen
Wenn nachträglich weitere Ergebnisse zu einer Ergebnismenge hinzukommen, wird der räumliche Ausschnitt auf den gezoomt wird aktualisiert. Für Entwickelnde wurden Möglichkeiten eingeführt, die Anzeige von Spalten und die Reihenfolge von dynamischen Actions besser zu kontrollieren.
Neue Dienste-Typen für Suche und Selektion
Die Unterstützung von offenen Standards wird in diesem Release deutlich ausgeweitet. Es ist nun möglich, Dienste vom Typ OGC API - Features, OGC Web Feature Service (WFS), GeoJSON und CSV zur Suche und Selektion zu nutzen. Neben der Nutzung eigener Dienste ergeben sich so neue Möglichkeiten, um z.B. öffentliche Daten, die häufig in einem der OGC-Formate bereitgestellt werden, in eigene Apps einzubeziehen.
Für Entwickelnde
TypeScript
Mit diesem Release werden weitere Bundles in TypeScript (siehe Einführung in 4.12) ausgeliefert, was die Entwicklung gegen die Schnittstellen dieser Bundles einfacher und sicherer macht.
Hierzu zählen neben anderen die wichtigen map-init
und selection-*
Bundles.
Reactivity API
Das neue Bundle @conterra/reactivity-core
ist jetzt Teil von map.apps.
reactivity-core
implementiert ein auf "signals" basierendes Reaktivitätssystem.
Dieses System kann verwendet werden, um auf einfache Weise zustandsabhängige APIs und darauf basierende reaktive Benutzeroberflächen zu implementieren.
Langfristig soll das neue Reaktivitätssystem dort zum Einsatz kommen, wo man heute Klassen wie Mutable
oder Binding
verwendet.
Vorerst ist die Reaktivitäts-API als frühe Vorschau enthalten (Änderungen werden noch auf der Grundlage von Feedback vorgenommen).
Um Elemente aus @conterra/reactivity-core
zu importieren, schreiben Sie:
import { /* ... */ } from "@conterra/reactivity-core";
// or, for convenience:
import { /* ... */ } from "apprt-core/reactivity";
Um reaktive Werte aus einer Vue-Komponente zu verwenden, wurde ein neuer composable mit dem Namen useReactiveSnapshot()
erstellt (für Details siehe apprt-vue’s bundle documentation ):
import { useReactiveSnapshot } from "apprt-vue";
Weitere Verbesserungen
Zu Verbesserungen in apprt-core zählen die Einführung von /clone
und /assignWithPrototype
Modulen, sowie der Support für synchrone Events.
Bei der Entwicklung für die Selection UI können nun nicht interaktive SpatialInputActions genutzt werden. Außerdem wurde eine Möglichkeit zur besseren Kontrolle von zusätzlich benötigten Fenstern geschaffen (z.B. Radius eingeben, um eine Kreis-Auswahl zu treffen).
Weitere Neuerungen
-
Das von map.apps als technische Basis genutzte ArcGIS Maps SDK for JavaScript wird mit diesem Release auf die Version 4.29 aktualisiert. Dies führt zu zahlreichen Verbesserungen und Fehlerbehebungen in der Basistechnologie.
-
Bei der Räumlichen Auswahl (Selektion) kann während der Nutzung entschieden werden, ob vorhandene Ergebnisse ersetzt oder ergänzt werden sollen.
-
Bei der Suche wird bei Nutzung des ArcGIS World Geocoder nun die Kartenposition für die Gewichtung der Ergebnisse berücksichtigt.
-
Popups
-
Die Reihenfolge der Darstellung wenn mehrere Objekte getroffen wurden, entspricht nun der Layer-Reihenfolge in der Karte.
-
Popups können nun auch für ArcGIS Tiled Map Services konfiguriert werden.
-
Popups können nun auch bei geöffneter Zeichnen-Werkzeugleiste geöffnet werden. Nur wenn ein konkretes Werkzeug aktiv ist, werden keine Popups geöffnet.
-
-
Die Integration von service.monitor Analytics zur Verfolgung von Backend-Aktionen in map.apps wurde vereinfacht.
-
Apps können nun analog zu Bundles in einen definierten Ordner als statische Dateien gelegt werden und werden dann beim Server-Start importiert.
-
Um die Accessibility zu verbessern, wurde der Kontrast im Everlasting Theme optimiert.
-
Beim Editieren kann das Verhalten beim Fangen (Snapping) detaillierter gesteuert werden (z.B. Fang-Toleranz).
-
Es ist nun möglich Tabellen in der Karte zu registrieren, um diese z.B. zur Darstellung oder Bearbeitung von abhängigen Daten zu nutzen (Related Tables)
-
Die Bundle-Dokumentation wurde verbessert: Nach einer Suche wird direkt die Readme-Datei angezeigt und nicht erst die Auswahl der Version. Der Zugang zu den Inhalten wurde so beschleunigt. Außerdem werden externe Links in neuen Tabs geöffnet und sind als solche gekennzeichnet. Am Rand jeder Seite wird ein Inhaltsverzeichnis der Inhalte der jeweiligen Seite angezeigt.
-
Der App-Editor zeigt nun beim Scrollen immer die übergeordnete Verschachtelung in der JSON-Struktur an. Die Orientierung in welchem Abschnitt man sich befinden wird so besonders in größeren Dateien vereinfacht.
Update-Hinweise
Falls Sie bei dem Update mehrere Versionen überspringen, befolgen Sie bitte auch alle Update-Hinweise der dazwischenliegenden Versionen. |
Result Center: Änderungen bei der Zahlenformatierung
Mit der neuen Funktion zur Steuerung der Formatierung von Datumsspalten und Zahlen ergeben sich Änderungen bei der Standardausgabe von Zahlen.
Fließkommazahlen haben nun standardmäßig drei Stellen nach dem Komma, was zu einer anderen Ausgabe als bisher führen kann. Ganzzahlige Werte haben überhaupt keine Nachkommastellen. Dieses Verhalten wird durch die Metadaten des Stores bestimmt. Wenn ein Dienst beispielsweise Integer-Werte in einem Feld des Typs "Double" speichert, erhalten diese Werte auch Nachkommastellen (Nullen am Ende).
AutoStoreRegistrierung
Wie zuvor beschrieben, werden neue Layer-Typen für die Suche und Selektion unterstützt. Wenn Sie die Auto-Store-Registrierung für eine App aktiviert haben und die Kartenkonfiguration einen der neu unterstützten Typen enthält, werden diese nun möglicherweise im räumlichen Auswahldialog angezeigt oder erzeugen Ergebnisse, wenn Sie die Suchfunktion verwenden.
Bundle layerlist umbenannt
Das Bundle layerlist
wurde in test-layerlist
umbenannt, um seinen Zweck deutlich zu machen.
Wenn es verwendet wird, muss die App-Konfiguration entsprechend aktualisiert werden.
Änderungen im Datenbankschema der Beschreibungsspalten
Neue Installationen verwenden eine geringere Länge für die Beschreibungsspalten der Tabellen apps
, apptemplates
, jspacks
und reporttemplates
(512 Zeichen, statt 2048) als in früheren Versionen.
Die bisherige Länge war für einige Datenbanken im Hinblick auf die Indizierung zu groß und konnte bei der Einrichtung zu Warnungen führen.
In der Praxis werden sehr lange Beschreibungen nicht verwendet, so dass diese Änderung ohne Bedenken auf bestehende Installationen angewendet werden kann.
Um die Änderung auf Ihre bestehende Installation anzuwenden, gehen Sie manuell vor:
-
Der Datenbankbenutzer muss die Berechtigung haben, Tabellen und Indizes zu erstellen/zu ändern.
-
Nach der Aktualisierung können die Berechtigungen wieder entzogen werden.
Verwenden Sie das entsprechende SQL-Skript für die von Ihnen verwendete Datenbank. Das Skript ändert den Datentyp der betreffenden Spalten und schneidet alle vorhandenen Werte auf die neue Maximallänge ab.
Änderung der ComponentContext.getProperties Methode
Sollten Sie in eigenen Komponenten die Methode ComponentContext.getProperties
verwenden, beachten Sie bitte, dass diese Methode in diesem Release geändert wurde.
Die Methode gibt jetzt ein einfaches JavaScript Objekt zurück, welches die Konfigurationsoptionen der Komponente auflistet und nicht mehr ein Objekt vom Typ ct/Hash
liefert.
Wir empfehlen ganz auf die Verwendung dieser Methode zu verzichten und den empfohlenen Weg über _properties
zu nutzen:
activate() {
const properties = this._properties;
const value = properties.key;
}
Alternativ passen Sie Ihren Code wenn nötig wie folgt an:
activate(componentContext) {
const properties = componentContext.getProperties();
// alter Code
const value = properties.get('key');
// neuer Code
const vale = properties.key;
// alter Code
const propertiesAsObject = properties.entries;
// neuer Code
const propertiesAsObject = properties;
}
Ausgelaufene Unterstützung
-
Die Methode
ComponentContext.getProperties()
liefert ein einfaches JavaScript Objekt und nicht mehr ein Objekt vom Typect/Hash
. -
Die Klasse
ct/mapping/store/MapServerLayerStore
wurde entfernt, damit entfällt auch die OptionlegacyImplementation
imagssearch
Bundle (abgekündigt seit 4.13). -
Die Unterstützung für
data-template-window
unddata-template-window-events
in template files wurde entfernt (abgekündigt seit 4.12). -
Die Klassen im Modul
ct/store/
, die inzwischen durch Klassen im Modulstore-api/
ersetzt werden können, wurden entfernt (abgekündigt seit 4.12). -
Die JS Registry kann nicht mehr als npm Registry verwendet werden.
-
Die Konfigurationsoption
allowedWorkflows
im Bundleediting
wurde entfernt. Verwenden Sie stattdessen die OptionenvisibleElements.createFeaturesSection
undvisibleElements.editFeaturesSection
, um die SektionenFeatures erstellen
bzw.Feature bearbeiten
im Editing Widget ein- oder auszublenden (abgekündigt seit 4.14).
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.
-
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
auffalse
setzen.
-
-
Die Unterstützung von
app.jsp
Dateien für das rollenbasierte Filtern vonapp.json
Dateien wird nicht mehr weiterentwickelt und in einer der kommenden Versionen entfernt. -
Das Widget
username
aus dem Modulauthentication/UsernameWidget
wird in der nächsten Version entfernt. Benutzen Sie stattdessen das WidgetauthenticationInfo
aus dem Modulauthentication/AuthenticationInfoWidget
. map.apps verwendet das WidgetauthenticationInfo
seit längerem standardmäßig im "seasons" Template. Das heißt, dass ein Anpassung nur notwendig ist, wenn Sie das Widgetusername
explizit in Ihren Apps verwenden. -
Bundles:
-
Das Bundle
omnisearch-portalitem
wird in Kürze entfernt. -
Das Bundle
share-link-shim
wird in Kürze entfernt. -
Das Bundle
omnisearch
wird nicht mehr weiterentwickelt. Verwenden Sie stattdessen das Bundlesearch-ui
. -
Die Bundles
resultcenter
undselection-resultcenter
werden nicht mehr weiterentwickelt. Verwenden Sie stattdessen das Bundleresult-ui
.
-
-
Entwicklung:
-
Die Unterstützung der JavaScript Module
test-utils/later
undtest-utils/waitForProperty
wird demnächst entfernt. Benutzen Sie stattdessen das neue Modultest-utils/waitFor
(ab 4.18.3) verfügbar. -
Die Unterstützung von
module.exports
in JavaScript-Dateien wird demnächst entfernt. Benutzen Sie stattdessen die ECMAScript Keywordsexport
bzw.export default
. -
Um eine zukünftige Migration von AMD zu einem anderem Modulsystem zu erleichtern sollten JavaScript-Dateien nach Möglichkeit nur noch als ECMAScript Module verfasst und anschließend transpiliert werden.
-
Die Unterstützung von
cancel
in der Rückgabe der Abfrageergebnisse (QueryResult) eines Stores wird demnächst entfernt. Ziel ist es die Komplexität derstore-api.Store
Api zur reduzieren. Bitte benutzen Sie stattdessen einen AbortController , wie unter Nutzung eines AsyncStore beschrieben.const aborter = new AbortController(); store.query({name: "Test"}, { signal: aborter.signal }) .then((resultItems)=>{ ... }, (e)=>{ if (e.name === "AbortError"){ // aborted } }) // trigger abort aborter.abort(); [source,javascript]
-
Die folgenden Klassen werden in einem der nächsten Releases entfernt:
-
Abgekündigte Klasse | Alternative |
---|---|
|
native JavaScript Funktionen |
|
|
|
|
|
|
|
|
Bekannte Einschränkungen
|
[Map] Zoom via mousewheel does not allow to zoom to the full max or min extent in some situations |
|
[Printing] Printing of line measurement not possible with PrintTask published from ArcMap |
Abhängigkeiten
-
Esri ArcGIS Maps SDK for JavaScript 4.29.10
-
ArcGIS Arcade 1.26
-
JasperReports 6.21.3
-
Moment.js 2.29.4
-
Vue.js 2.7.15
-
Vuetify.js 1.5.24 (with custom patches, tracked as 1.5.30)
Changelog
4.18.3
Improvements
|
[ct-proxy] Support lookup of bearer token from file |
|
[Reporting] Add accessibility information to default report template |
Fixed Issues
|
[Result Center] GeoJSON fields that contain dots in name are not found |
|
[Window Manager] Programmatically maximized window gets size 0 on restoring |
|
[popups-default] Popup shows field name instead of title from store metadata |
|
[Popups] Wrong date format when opening popup for store |
|
[app-import] Flag sharedInGroups is ignored |
|
[jsregistry] Regex after arrow function leads to illegal layer.js files |
|
[Vuetify] v-chip submits HTML form |
|
[authentication] UsernameWidget configuration is not applied |
|
[result-ui] esriFieldTypeSmallInteger is shown as decimal value |
|
[BrowserSync] Support current proxy.allowedServerUrls Syntax |
|
[Native App Export] Launch failure |
|
Missing assets of calcite-components |
|
[Accessibility] Layer options in TOC cannot be reopened |
|
[Accessibility] ButtonActions in TOC are not focusable by keyboard |
|
[App Editor] Pre-optimized app can be saved unnecessarily |
|
[Apps overview] App is opened in the current browser tab |
|
Loading screen does not escape HTML when rendering app title |
|
[Map] Missing hint for missing WebGL 2 support |
|
[result-ui] Row actions in overflow menu are not read by screen reader |
4.18.2
Fixed Issues
|
[Accessibility] Add search role to search-ui |
|
[Accessibility] Pressing Enter when Reset button has focus triggers EnterKeyAction in SearchUI |
|
[Live configuration] Saving component factory configuration is broken |
|
[SearchUI] EnterKeyAction sometimes not triggered |
|
[WindowManager] Screen reader reads "Can be moved with arrow keys" for fixed windows |
4.18.0
New Features
|
[Accessibility] Improve color contrasts in everlasting theme |
|
[Accessibility] Improve screenreader support and focus highlight in Manager menu |
|
[App Editor] Enable sticky scrolling |
|
[App Editor] Update monaco editor to 0.47.0 |
|
[App Import] Automatic App import during server startup |
|
[apprt-core] Add apprt-core/clone as alternative for ct/_lang#transform |
|
[apprt-core] Add appt-core/assignWithPrototype as alternative for ct/_lang#merge |
|
[apprt-core] Support synchronous events and remove usage of Observable |
|
[Documentation] Add how-to in Developer’s guide for automated app import |
|
[Documentation] Format chart headings for popups |
|
[Editing] Support snapping properties distance, featureEnabled and selfEnabled |
|
[JS Registry] Decorate external links in READMEs and open them in new browser tab |
|
[JS Registry] Provide direct link to bundle README from bundle search result list |
|
[JS Registry] Sidebar TOC for bundle READMEs |
|
[JS Registry] Update Apache commons compress to 1.26 |
|
[Map] Allow to register tables |
|
[Popups] Allow popups on ArcGIS Tiled Map services |
|
[Popups] Sort features according to order of map layers |
|
[Pre-Optimization] Use background task to compress GZIP and Brotli |
|
[Result Center] Add custom fields using Arcade Expressions |
|
[Result Center] Add methods to show and hide columns programmatically |
|
[Result Center] Collapse topic sidebar |
|
[Result Center] Configure alignment of fields |
|
[Result Center] Configure field alias |
|
[Result Center] Configure field output of numbers and dates |
|
[Result Center] Configure to always show sidepane |
|
[Result Center] Control order of dynamic actions |
|
[Result Center] Dynamically calculate when an action menu is required |
|
[Result Center] Improve automatic size of columns |
|
[Result Center] Move all actions to "More Actions" menu when on mobile screens or in narrow mode |
|
[Result Center] Move row actions to left side |
|
[Result Center] Order bulk actions by label instead of ID |
|
[Result Center] Row action to open popup |
|
[Result Center] Row action to start edit workflow |
|
[Result Center] Set maximum length of visible cell content |
|
[Result Center] Show 'more actions' menu only if it contains more than one action |
|
[Result Center] Show tooltip for too long topic names |
|
[Result Center] Support all Esri dateformat values similar to popups |
|
[Result Center] Support popups for highlighted items that are not shown on the map |
|
[Result Center] Update table when underlying FeatureLayer is edited |
|
[Result Center] Zoom to all results when clicking on topic in sidebar |
|
[Result Center] Zoom to new extent when results are added |
|
[Search] Add support for GeoJSON, CSV and WFS |
|
[Search] Consider map position for ranking search results of ArcGIS World Geocoder |
|
[Search] Respect time extent for search and selection |
|
[Search] Search and select in OGC API Features layer |
|
[Selection] Add optional hooks to allow developers to control additional widgets |
|
[Selection] Allow to use non-interactive SpatialInputActions |
|
[Selection] Allow user to decide if current results are replaced or merged |
|
[Setup] Simplify integration of service.monitor analytics tracking |
|
[Sketching] Support popups when not drawing |
|
[System] Update ArcGIS Maps SDK for JavaScript to version 4.29 |
|
[Vuetify] Improve accessibility for vuetify button groups component |
Fixed Issues
|
[Accessibility] Keyboard focus for map is shown during mouse navigation |
|
[Accessibility] Missing aria attributes for basemaps dropdown in TOC |
|
[apprt-core] Value lookup in string-replace helper ignores keys containing a dot |
|
[App Editor] Schema validation fails if jsregistry url is defined without protocol |
|
[Database] Maximum key length for a nonclustered index exceeded in Microsoft SQL Server |
|
[Documentation] Broken link to bundle documentation |
|
[Editing] Input type date picker shows unwanted time input |
|
[Editing] Visual feedback when hovering item in template list is missing |
|
[Editing] Wrong text color for disabled field content in everlasting theme |
|
[JS Registry] Bundle README links to other bundles with anchors are not working |
|
[Map] GeoJSON layers with popupTemplates generate unwanted underscores |
|
[Measurement] Measurement over long distances in EPSG 25832 leads to errors |
|
[Popups] All line breaks in tables are moved to the beginning |
|
[Popups] Attachments are not shown in popup opened from open-popup map action |
|
[Reporting] Report generation fails if service URL contains special characters |
|
[Result Center] Selection column header can be scrolled out of view |
|
[result-ui] Cannot trigger row action for feature with id |
|
[Selection] Missing feature highlight |
|
[TOC] Window can not be uncollapsed after it was closed in collapsed state |
|
[TOC] Wrong behavior of visibilityMode exclusive |
|
[Vuetify] Do not show v-tooltip when user touches on element |
|
[Vuetify] Menus stay opened when content outside the menu is scrolled |