Version 4.1.1
Changelog (Release)
Hier finden Sie die Historie der Vorgängerversion. Die Änderungen der aktuellen Version finden Sie hier.
Diese Version wurde initial März 2020 veröffentlicht.
Bitte beachten Sie die folgenden Hinweise vor der Installation des Updates
Für cardo Betreuer:
- Prüfen Sie, ob evtl. die Änderungen am Datenbrowser für Sie eine Rolle spielen.
- Erwägen Sie, ob die Implementierung der Datenquelle ESRI FeatureServices in Iwan7 als Alternative für WFS Dienste genutzt werden kann.
Für Administratoren:
- Prüfen Sie, ob evtl. für die Bereitstellung anonymer WFS 3.0 Dienste die IIS Einstellungen angepasst werden sollten.
- Zusätzliche Einrichtungsschritte sind für die Höhentransformation mit HOETRA erforderlich.
Für Entwickler: Wir empfehlen den Ausführungen unter
besondere Beachtung zu schenken.
April 2020
Release 4.1.1.43561 (29.04.2020)
- Fix: Fehler im Beschriftung-Erstellen-Dialog behoben.
Release 4.1.1.43348 (06.04.2020)
Fix: Bei der Datenbearbeitung im AnySourceEditor ....
Neu ist der Modus "Formulardaten immer neu laden" (siehe Kontext-Menü). In diesem Modus werden bei jedem Wechsel eines Datensatzes dessen Daten vom Server neu geladen, wobei lokal geänderte Werte erhalten bleiben.
März 2020
Release 4.1.1.43305 (31.03.2020)
Neu: GeoSQL-Administration: Beim Speichern von Abfragen schließt sich das Formular jetzt nicht mehr automatisch. Vor dem Schließen wird geprüft, ob ungespeicherte Änderungen vorliegen.
Neu ist auch eine Testfunktion beim Erstellen der Abfragen.
Fix: Bei Autocomplete-Feldern wurde die Eingabe gelöscht, wenn die vorherige Eingabe einen Eintrag selektiert hatte.
Release 4.1.1.43152 (17.03.2020)
Neu: Verbesserungen bei der Druckausgabe und beim Kartenbild speichern von Sketch-Zeichnungen und anderen Zeichnungen und Markierungen, die über der Karte dargestellt werden.
Intern werden nun alle diese Grafiken gleichartig verarbeitet und es gibt beim Bild speichern keine Einschränkungen mehr gegenüber der Druckfunktion.
Neu: Verbesserungen in Sketch:
- Texte mit einem Umriss werden nun auch im Ausdruck entsprechend wiedergegeben und nicht mehr mit der rechteckigen Hinterlegung, die bisher als Ersatz dafür diente.
- Verbesserung der Positionierung und Darstellung von Texten und Symbolen im Ausdruck und damit Annäherung der Darstellung zwischen Browsern und Ausgabeformen.
- Im FireFox wurde das ungefüllte Rechteck-Symbol nicht angezeigt.
Fix: Beim Umschalten von Grundkarten mit unterschiedlichen Koordinatenbezugssystemen (KBS) konnte fälschlicher Weise die Meldung kommen, dass kein geeignetes KBS für die Anzeige zur Verfügung stünde. Außerdem wird jetzt das Standard-KBS des cardo-Projektes bei einem notwendigen Wechsel bevorzugt, wenn möglich.
Fix: Das Speichern der "Letzten Sitzung" beim Neuladen der Seite (durch F5) führte bei Browsern die "SendBeacon" unterstützen (faktisch alle, außer dem Internetexplorer) u.U. zum Wiederherstellen der vorherigen Sitzung.
Hintergrund: In genau dieser Konstellation wird die Seite bereits geladen, während der Status noch gespeichert wird.
Die Daten der letzten Sitzung werden jetzt per Request nachgeladen, bisher wurden diese in die Startseite eingebettet. Abweichungen kann es nur noch bei den Favoriten geben.
Release 4.1.1.43136 (16.03.2020)
- Fix: Das Speichern der "Letzten Sitzung" im Internetexplorer funktionierte nicht mehr zuverlässig.
Release 4.1.1.43130 (15.03.2020)
Neu: Verbesserungen beim Einbinden von Ebenen des Typs ESRI FeatureService (im Managementcenter und in Iwan7)
Neu: Die Ausgabeformatierung der Ebeneninformation wurde etwas überarbeitet, um die Darstellung bei langen Beschreibungstexten zu verbessern.
Fix: Bei GeoSQL Abfragen mit Parametern oder Filtern vom Typ "Geometrie" kam es zu dem Fehler Bei der Ausführung der GeoSQL Abfrage trat ein Fehler auf. near "typeCode" oder ein Laufzeitfehler der Art "Der Geometry-Typ undefined ist unbekannt" wurde ausgelöst.
Release 4.1.1.43107 (11.03.2020)
- Fix: In der Sachdatenanzeige trat beim Export "Daten aller Abfragen exportieren" in Kombination mit dem Format "Excel" der Fehler Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. auf.
4.1.1
Desktop
Neu: Aktionen auf Anwendungen, die mehrere aktive Instanzen haben, werden jetzt an das Fenster mit dem höchsten z-Index weitergeleitet (das entspricht dem zuletzt genutzten Fenster dieser Anwendungsart).
Vor allem bei der Kartenanwendung ist dies nützlich. Hier werden die Aktionen aus dem Kontextmenü (bspw. in "Karte anzeigen") der "richtigen" zugeordnet.
Neu: Ab und an kam es durch Eingaben zum unbeabsichtigtem Neuladen der Browser-Seite. Folgende Änderungen wurden jetzt vorgenommen:
- Die Backspace-Taste wird geprüft, wenn diese nicht in einem editierbarem Eingabeelement gedrückt wird, wird der Vorgang jetzt unterbrochen.
- Es erfolgt eine (Browser-) Meldung, ob die Seite neu geladen werden soll, wenn mind. eine cardo Anwendung geöffnet ist. Die Meldung kommt bspw. bei Klick auf den "Zurück-Button" im Browser und auch beim explizitem Neuladen, bspw. ausgelöst mit der F5-Taste *1.
*1 nur bei explizitem {CTRL+R} erfolgt keine Nachfrage.
Fix: Wenn die Karte maximiert war und eine Aktion im ersten Treffer des Suchfelds ausgeführt wurde, klappte die Grundkartenauswahlliste auf.
Fix: Wenn eine Anwendung per Drag&Drop maximiert wurde, wurde die Fensterposition beim "Wiederherstellen" nicht korrekt wiederhergestellt - dadurch konnte die Titelleiste der Anwendung unter die Taskleiste rutschen und unerreichbar werden.
Karte
Neu: Überarbeitungen der Kontextmenü-Einträge der Karte
Neu: Geometrieaktionen sind jetzt immer vorhanden. Wenn das Feature einen Titel hat, dann wird dieser angezeigt (bspw. "Freihandgeometrie ersetzten TITEL").
Für einzelne Geometrien sind die Aktionen jetzt gruppiert, es werden maximal 10 Einträge angezeigt.
Neu: Immer vorhanden ist der Eintrag "Klickpunkt kopieren", hiermit wird die Koordinate des Klickpunktes in die Zwischenablage überführt. Im Untermenü gibt es noch verschiedene Formate und die Möglichkeit die Bounding-Box des Kartenausschnittes zu kopieren.
Neu: Der Themenbaum in der Karte sowie die Anwendung "Themenbaum" haben jetzt eine einfache Suche. Nach Eingabe des Suchbegriffs startet die Suche, erneutes Suchen
geht dann zum nächsten Treffer. Die Reihenfolge ergibt sich aus der "Genauigkeit" der Treffer. In der Anwendung Themenbaum werden Ebenen, an denen keine Berechtigung zum Anzeigen in der Karte vorhanden ist, jetzt grau dargestellt.
Neu: In der Fußzeile ist jetzt ein kleiner Maßstabsbalken mit enthalten.
Neu: In der Toolbar ist ein Schalter zum Neuladen der Karte vorhanden.
Fix: Die Markierung in der Übersichtkarte wurde nicht korrekt gezeichnet, wenn entweder diese initial geschlossen war oder sie geschlossen wurde, weggescrollt und sie dann wieder geöffnet wurde.
Fix: In der Ebenenliste wurden die Sortierbuttons nicht korrekt deaktiviert, wenn nicht sichtbare Ebenen ausgeblendet wurden.
Fix: Wenn eine Ebene zur Karte hinzugefügt werden soll, welche bereits vorhanden ist, wird der Ebenenbaum zur entsprechenden Stelle ausgeklappt und die Ebene selektiert.
Geometrieoperationen
Neu: Ein neues Werkzeug für Aggregat-Aktionen der Geometrie einer Ebene wurde hinzugefügt. Hiermit kann auf die Ebene (oder auch die Selektionsebene) eine Aggregierung der Geometrie vorgenommen werden. Zusätzlich können die Daten noch gruppiert werden.
Der Ergebnisse stehen dann direkt als Geometrie anderen Aktionen zur Verfügung (bspw. Übernahme in Sketch).
Evtl. entstehende Collections werden dabei aufgelöst und als Einzelgeometrie zurückgegeben.
Wichtig: Abhängig vom FeatureCount kommt eine Warnung als Nachfrage ("Wollen Sie wirklich..."), da der Vorgang u.U. lange dauern kann. Ab 100.000 Datensätze kommt eine Fehlermeldung. Aus diesem Grund sollten Sie dafür Sorge tragen, nur wenig von der Möglichkeit gebrauch zu machen, die Ermittlung des Featurecount beim Laden der Ebene zu deaktivieren.
Ebenenbeschriftung
- Neu: im Beschriftungsdialog gibt es für Flächen die neuen Eigenschaften "text-each-element" und "text-placement". Damit kann festgelegt werden, ob bei Multipolygonen jede Einzelfläche (Standard) oder nur die Gesamtgeometrie beschriftet wird.
Geometriefeld (Freihand etc.)
Neu: Bei der Bearbeitung werden jetzt Länge/Fläche der Geometrie angezeigt. Bei Linien zusätzlich die Länge des ersten /letzten Segments und die Winkel des Bearbeitungssegmentes.
- Die Beschriftung kann auch im Ansichtsmodus aktiviert werden (Kontextmenü auf das Stammelement der Geometrie.)
Innenringe von Polygonen werden beim Überfahren des Bearbeiten-Icons jetzt auch in der Karte hervorgehoben.
Bei der Neuerstellung von Geometrien steht jetzt auch das Kontextmenü in der Karte zur Verfügung. Dort sind Aktionen wie letzten Punkt löschen, Anzeige der Stützpunkte etc. verfügbar.
Während der Bearbeitung ist das Umschalten der Projektion der Karte deaktiviert.
- An verschiedenen Stellen wurden Hilfelinks zur Seite "Freihandgeometrie" integriert.
Neu: Die "Informationen zur Geometrie" enthalten jetzt auch das alte IWAN-Geometry - Gis-Format.
Fix: Bei Übernahme von Polygonen war nicht sichergestellt, dass die Ringe geschlossen waren (bspw. aus der Messung).
Fix: Beim Löschen von Stützpunkten mit CTRL - Taste wurde u.U. 2 Punkte statt nur dem letzten gelöscht.
GeoSQL
- Neu: Parameter und Filter vom Typ "Geometrie" können jetzt über das normale Geometriefeld gefüllt werden. Damit steht dort u.a. auch die Toolbox zur Verfügung.
Transformationstool
Neu: Die Transformation für Höhendaten mittels HOETRA2016 verwendet jetzt nicht mehr den Webservice (dieser ist seit ca. 12/2019 nicht mehr verfügbar). Der Code wurde unter Verwendung der DLLs neu geschrieben.
Sie müssen die Installation entsprechend der Nutzung der Höhentransformation DHHN92 ↔ DHHN2016 mit HOETRA2016 manuell ausführen (für GeoTools.net auf dem Clientrechner, für cardo nur auf dem Server).
Sachdatenanzeige
Neu: Recherche - Das Eingabefeld schaltet jetzt auf das passende Format automatisch um, wenn DateTime-Werte aus einer Nachschlageliste eingefügt werden. Die Modi sind:
- Datum
- Datum und Uhrzeit
- Datum, Uhrzeit und Millisekunden
- Das Format kann auch manuell umgeschaltet werden.
- Achtung: Bei PostgreSQL können Timestamps 6 Nachkommastellen bei den Sekunden haben. Diese können von der Recherche nicht abgedeckt werden.
Neu: Das feste Anzeigelimit von 50.000 Datensätzen ist jetzt aufgehoben.
Bei Datenquellen, welche die Limitierung der Datenmenge unterstützen, werden standardmäßig die ersten 1.000 Datensätze angezeigt, weitere Optionen, auch für "alle Datensätze" finden sich im Kontextmenü.
Der Tab-Titel der Sachdatenanzeige weist auf eine bestehende Limitierung hin, zusätzlich wird eine kurze Information angezeigt, wenn nicht alle Daten geladen wurden.
Exportiert werden trotzdem immer alle Datensätze!
Neu: Verbesserungen an der Darstellung des Zeilen-Tooltips:
Textfelder mit Umbruch (Absätze) werden jetzt auch so dargestellt, anstatt alles auf eine Zeile zu schreiben.
Langer Text wird an den Rändern des Tooltips umgebrochen, anstatt heraus zu ragen.
Die Maximalgröße des Tooltips ist jetzt 66% der Breite und Höhe des Fensters. Damit kann der Tooltip bei großen Tabellen nicht mehr den Bildschirminhalt komplett ausfüllen. Allerdings kann in diesem Fall ein Teil abgeschnitten werden.
Bitte beachten Sie die bekannte Einschränkung: Enthält der Tooltip Informationen, die über die potentiell mögliche Größe der Tooltip Anzeige hinausragen, so ist aus technischen Gründen kein Scrollen am Tooltip möglich.
Neu: Die Meldung ...
"Bitte nutzen Sie eine Ebene aus der cardo-Umgebung für die Betroffenheitsrecherche oder wählen Sie eine andere Registerkarte aus, deren Datensätze dann auf die Betroffenheit geprüft werden. Abbruch mit ESC." ....
kann jetzt geschlossen werden, wenn sie im Weg ist. Der entsprechende Button ist jetzt ein Toggle-Button: wenn gedrückt, ist die Auswahl aktiv. Darüber kann die Auswahl auch durch erneutes Klicken abgebrochen werden.
Neu: Spaltenbreiten bleiben jetzt beim Neuladen und bei der Sitzungswiederherstellung erhalten.
Fix: Berechnete Spalten wurden auch dann hinzugefügt, wenn die Formel einen Fehler hatte, so war dann nur eine leere Spalte mit halbbefüllten Daten vorhanden.
Recherchedialog:
Fix: Recherche - Eine Nachschlageliste mit nur NULL-Werten erscheint jetzt als leer (anstatt einen unklickbaren "null"-Eintrag anzuzeigen).
Fix: Recherche - Beim Vergleich gegen DateTime-Werte, kann jetzt im Eingabefeld der Modus zwischen "nur Datum" und "Datum und Zeit" umgeschaltet werden. Leider kann man diese Einstellung derzeit noch nicht persistieren, es muss also pro Abfrage festgelegt werden (Standard ist "nur Datum").
Fix: Recherche - Datumswerte wurden mit Zeitzone in den Filter gegeben. Dadurch wurden diese in der Datenbank nicht korrekt abgefragt.
Fix: Die Recherche enthielt einen Fehler bei der Erstellung der Vorschauliste bei einer Spalte mit Format (z.B. Datum). Dort wurde versucht, bei Auswahl das formatierte Datum (String) in das Datumsfeld einzufügen.
Fix: Bei der Übernahme eines Filters aus einer cardo3-Anwendung (z.B. AlkisPro) wurde dieser u.U. nicht in die Rechercheansicht übernommen.
Suchfeld
Neu: Die Suchprovider werden jetzt sortiert ausgeführt. Die Suchprovider mit dem Verhalten "StopDefaultSearchesIfNotEmpty" werden dabei immer zuerst ausgeführt, der Standardsuchprovider immer als letztes.
Zudem können Suchprovider auch als Hintergrund-Task ausgeführt werden. Siehe dazu die neue Schnittstelle
ITaskSafeSearchProvider
. Implementiert z.Z. für den GazetteerSearchProvider, dieser wird jetzt immer parallel zu den anderen Suchen durchgeführt.Fix: Wenn in der Suche eine Ebene gefunden wurde, für die die Datenbearbeitung mit dem "AnySourceEditor" eingerichtet ist, dann wurden u.U. falsche Berechtigungen ermittelt (die des Benutzers, der als erstes nach dem Serverstart die Suche ausgeführt hat). Damit wurde der Eintrag zum Bearbeiten in der cardo Oberfläche nicht oder unberechtigt angezeigt.
cardo.COM
- Fix: Werte wurden nicht korrekt dekodiert. Bspw. funktionierte folgender Aufruf nicht korrekt:
....&layer=L159&field=stadtteiln&value=Radeberger%20Vorstadt
.
Sonstiges
Neu: Beim Auswahl einer Sitzung zum Wiederherstellen auf dem Desktop oder vom Startknopf wird jetzt das Erstelldatum und der Ersteller im Tooltip angezeigt.
Neu: Einige Kunden würden gerne für Nutzer den Abruf von GeoJSON als Dienst ermöglichen. Wir haben dazu eine erste rudimentäre Implementierung des WFS 3.0 Standards in cardo4 vorgenommen.
Hier finden Sie die Beschreibung der WFS 3.0 Implementierung.
Aufrufe an den Pseudo-Pfad "Public" erfolgen dabei unter dem Nutzer "SYSTEM_ANONYMOUS_USER" (wie auch in cardo3).
Beachten Sie, dass bei Windows-Authentifizierung für den Ordner im IIS Manager Anonymer Zugriff zugelassen wird.
Neu: Unsere Visual Studio Extension wurde für Visual Studio 2019 16.4 aktualisiert. Den Download finden Sie unter Entwickler-Extension.
Neu: Beim Versuch eines gesperrten Benutzers sich am cardo4 anzumelden, kommt jetzt eine Fehlerseite mit der entsprechenden Meldung, anstatt der Standard-IIS-Fehlerseite.
Neu: Die administrativen cardo3 Anwendungen für den Datenimport Gazetteer und WinAKPS können nun auch in cardo4 gestartet werden. (Nach dem Update müssen dafür die Konfigurationen beider Anwendungen im cardo3-Managementcenter aktualisiert werden. Ggf. anschließend im cardo4 "Dashboard" noch die Funktion "Cache leeren" aufrufen.)
Fix: In den Einstellungen / Karte konnte die Start-Ausdehnung nicht wieder geleert werden.
Fix: cardo4 konnte nicht gestartet werden, wenn der Browser eine für den Server ungültige Sprache abgefordert hat (konkret: Windows 2012 R2 Server, Windows 10 Client mit der Spracheinstellung "en-DE").
Fix: Die Einstellung "Beim Start aufgeklappt" zur Übersichtskarte war falsch beschriftet. Richtig ist der Titel "Beim Start zugeklappt". Die Beschreibung zur Einstellung war korrekt. Es wurde nur das Label geändert, nicht die Auswertung dieser Eigenschaft. D.h. das bisherige Verhalten bleibt unverändert.
Sketch
- Neu: Die Umrisse von Texten werden im Ausdruck und beim Kopieren des Kartenbildes nun korrekt ausgegeben und nicht mehr als rechteckige Hinterlegung des gesamten Textes.
Dashboard
- Neu: Im Dashboard gibt es eine neue Aktion zum Leeren der Caches.
Datenbrowser
Neu: BreakingChange: Ebenen, die aus Tabellen des Datenbrowsers geladen wurden, verwenden jetzt die Einstellungen aus "Editoreinstellungen".
Beachten Sie: Die bis dahin für die Ebene vorgenommenen Einstellungen werden mit diesem Update dann nicht mehr verwendet.
Neu: Bei der Aktion "Baum neu Laden" wird die aktuelle Ansicht wieder hergestellt.
Neu: In den Ebeneneigenschaften ist die EPSG Eingabe jetzt um eine zusätzliche Vorschlagsliste erweitert wurden.
Neu: In den WFS Eigenschaften des Sublayers kann jetzt ein Filter für die Ebene eingestellt werden.
Neu: Für WMS Dienste und WFS Dienste wird in den Eigenschaften jetzt die URL mit angezeigt (nur Leseansicht, ändern ist hier nicht möglich und auch nicht geplant).
AnySourceEditor
Fix: Per Trigger berechnete Daten wurden beim Speichern nicht in den aktiven Datensatz im Editor übernommen.
Fix: Die Umsetzung der Selektionen waren nicht identisch zwischen den Abfragen die der Kartenserver macht, mit denen die im Editor ausgeführt wurden. So wurde bspw. im Maptip 1 Treffer ermittelt, beim Überführen in den Editor waren dann im Ergebnis aber u.U. mehr Datensätze zur Ansicht hinzugefügt.
Fix: Änderungen an den Editoreinstellungen werden jetzt auch übernommen, wenn man einen Datensatz auswählt, anstatt das Formular zurückzusetzen.
Fix: Bei Zahlen- und Datumsfeldern werden die Formatierungseinstellungen der Anzeige jetzt auch in den Editor übernommen, sowohl am Feld als auch in der Liste.
Export
Neu: Erweiterungen des Standard-Exports
Neu: Beim Excel-Export können berechtigte Nutzer zusätzlich zu den Sachdaten die Geometrien im WKT Format oder den Mittelpunkt der Geometrie exportieren.
Neu: Die möglichen Exportformate wurden um GeoJSON FeatureCollection erweitert (Ergebnis ist eine Textdatei mit der Erweiterung .geojson).
Fix: Der Excel-Export verursachte Fehler, wenn in Textspalten Unicode-Steuerzeichen (z.B. 0x16) vorkamen. Diese werden nun herausgefiltert.
Fix: Beim Excel-Export werden jetzt alle Datensätze exportiert.
ExportV4
Fix: Filter an/aus konnte durcheinanderkommen, wenn man Ebenen an- und ausgeschaltet hat. Dadurch kam es u.U. zum Absturz bei Start, weil versucht wurde, auf einen leeren Filter zuzugreifen.
Fix: Das Hinzufügen einer Ebene zum Export ("Geodaten exportieren") funktionierte nicht, wenn die Anwendung nicht bereits gestartet war.
Fix: Wenn ein Geometriefilter übergeben wurde und die Geometrie kein Polygon war, scheitert die Ausführung des Jobs. Jetzt wird gleich eine Fehlermeldung übergeben, wenn eine Selektion mit z.B. Linie exportiert werden soll.
Exportmanager
- Fix: Bei der erneuten Auswahl der Gebietsvorlage wurde die alte Geometrie nicht aus der Karte entfernt.
Mein Cardo
- Fix: Bei freigegebenen Sitzungen wurden der Ersteller und das Datum nicht im Tooltip angezeigt.
API
Server
Fix: Es kam zu fehlerhafter Darstellung/Konvertierung von Datumsangaben bei der (De-)Serialisierung von Datumsangaben im Zusammenhang mit der Zeitumstellung:
- das Problem entstand durch die abweichenden Zeitberechnungen zwischen Browser (Chrome, Firefox, Edge) und Windows
- in der
TimeZoneInfo
von .Net/Windows für "Mitteleuropa" sind die historischen Änderungen nicht enthalten, sie bildet nur den Stand ab 1996 ab. In Javascript (Zeitzone "Europe/Berlin") sind diese Änderungen jedoch implementiert, dadurch kam es zu Abweichungen - bis 1995 endete die Sommerzeit am letzten Sonntag des Septembers, ab 1996 des Oktobers
- vor 1980 gab es lange Zeit keine Sommerzeit, die Regeln für 1980 und ab 1981 weichen ebenfalls ab.
- Mittels
IduIT.Core.Localization.TimeZoneHelper.CreateCustomGermanTimeZoneInfoWithDstRules()
kann jetzt eine TimeZoneInfo erstellt werden, welche die Regeln ab 1980 berücksichtigt, dabei ist folgendes zu beachten:- Bei
TimeZoneInfo.ConvertTimeToUtc(value, myTzi)
MUSS value.Kind == DateTimeKind.Unspecified sein, sonst gibt es eine Exception wegen falschen Typs. - Umgekehrt bei
TimeZoneInfo.ConvertTimeFromUtc(value, myTzi)
muss value.Kind == DateTimeKind.Utc sein - Änderungen an den Sommerzeitberechnungen vor 1980 (betrifft Jahre vor 1949) sind derzeit nicht enthalten).
- Bei
- Diese TimeZoneInfo wird jetzt standardmäßig im
IduIT.Core.Json.Converter.AjaxDateTimeConverter
verwendet. - Achtung: Dadurch ist die Umrechnung in den kritischen Zeiträumen jetzt im IE falsch, da dieser das fehlerhafte Modell aus Windows verwendet.
Neu: In "PiB" ist eine Sammlung neuer Methoden für Reporting entstanden. Diese werden bereits produktiv im "Anfragenmanager" verwendet. Zum anderen haben wir damit die CSS Beispiele für Iwan7 neu erstellt.
Für die Kreativen hier ein kleiner Einblick in einen Teil des Scripts:
Wer hier an "cardo.Button" denkt, liegt nicht ganz falsch ... langfristig soll das dazu eine Ergänzung werden.
Neu: Neue statische Methode
Sys.ServerModule.RunTask()
, hierbei wird ein System.Thread.Task erstellt und sichergestellt, dass eine cardo Umgebung im Task Kontext verfügbar ist (Cardo4.Env).Neu: Beim Aufruf einer nicht-statischen Ajax-Methode, wird die Klasseninstanz, wenn diese IDisposable ist, am Ende des Aufrufs "Disposed".
Neu: Unser ORM kann jetzt auch mit Member-Expressions umgehen.
Neu: Alle Fehlermeldungen werden in Ajax als JSON serialisiert. Neu ist, dass die Error-Message jetzt immer HTML Encoded ausgegeben wird.
In der IduIT.Core.BaseException ist eine neue Eigenschaft MessageIsHtmlEncoded vorhanden, diese kann gesetzt werden, wenn der Inhalt bereits encoded ist.
CodeGen
Neu: Neues Attribut
TsCodeEmbedNetTypeName
, erstellt in Namespace der Klasse eine Konstante "netTypeName".Fix: Das Attribut
TSMakeClassesNullable
hat nicht bei Interface-Typen gewirkt, dafür wurden fälschlicherweise numerische Typen nullable.Zudem kann dieses Attribut jetzt auch am Assembly definiert werden.
Client - BreakingChanges
Neu: BreakingChange
Geometry.GeometryUtils.makeValid
hat in allen Überladungen jetzt einen neuen 1. Parameter "useBuffer0ForPolygons", seit MakeValid "richtig" implementiert ist (bisher nur Buffer(0) ) entspricht das Ergebnis nicht mehr den Erwartungen. Mit true für useBuffer0ForPolygons kann das alte Verhalten wieder erzwungen werden.Neu:
ApplicationManager
: Die Methodestart
im ApplicationManager macht jetzt genau das Gleiche wiegetExistingOrStart
und ist damit im Prinzip obsolet.BreakingChange: D.h. die Events onBeforeStart und onStart werden jetzt nur noch dann ausgelöst, wenn die Anwendung nicht bereits offen war.
Die Methode
getExistingOrStart
hat einen neuem Parameter focusOnGetExisting, mit dem verhindert werden kann, dass die Anwendung fokussiert wird, wenn sie bereits offen ist.Neu: BreakingChange Das Interface
Kiss.Ui.Form.Field.IField<T>
hat eine neue Methode eachField, die implementiert werden muss. Damit können Felder, die Unterelemente haben, besucht werden. Hier eine Standard-Implementierung:/** * Interface-Impl, hier immer nur für das aktuelle Feld * @param fn * @param scope */ public eachField(fn: (item: Kiss.Ui.Form.Field.IField<any>) => void, scope?: object): void { fn.call(scope, this); }
Client
Neu: Loader für das dyn. Nachladen von Modulen. Bsp.:
//ist TableData schon mal geladen ... let D = IduIT.Core.Web.Namespace.tryResolve("IduIT.cardo.Core.CoreModules.TableData.Ui.Table") ? IduIT.Promise.Deferred.resolve(undefined) : IduIT.Core.Web.ResourceCollector.registerScripts("IduIT.cardo.Core.CoreModules.TableData.Ui"); D.done( => ...);
Neu: Verschiedene Neue Methoden und Erweiterungen in Kiss:
-
Kiss.Lang.String.splitQuotedString
-
Kiss.Ui.Form.Trigger.ClearButton
hat einen neuen Konfig-ParameterclearAlsoIfFieldIsReadonly
-
Kiss.Dom.Node.hitTest(e:HtmlElement,p:{x,y})
-
Neu: Der Funktion zur Erzeugung des Tooltips beim Grid, welche in der
IduIT.Core.Kiss.Ui.Grid.AbstractGrid.IAbstractGridConfig.rowTipRenderer
definiert ist, wird jetzt als zweiter Parameter der Index der getroffenen Spalte mitgegeben. Damit ist es jetzt möglich, den Tooltip auch Spalten abhängig zu erzeugen.Fix: Beim
IduIT.Core.Kiss.Ui.Grid.Selection.RowSelectionModel
wird nicht mehr onBeforeChange/oChange gefeuert, wenn per Maus oder Tastatur der selbe Datensatz wir vorher, aber eine andere Spalte gewählt wird, da sich an der Selektion ja tatsächlich nichts ändert.Fix: Bei der Autocomplete-Box bliebt der auswählte Wert (nur optisch) stehen, wenn dieser über einen Filter aus der Liste entfernt wurde, also eigentlich nicht mehr wählbar war.
Fix: Bei der Erstellung von Fenstern, für die der Konfig-Parameter
modal
nicht als boolean, sondern als "Component" übergeben wurde, wurde ein Eintrag in der Taskleiste erstellt.Neu: Neue Klasse
IduIT.Core.Geometry.GeometryFactory
mit statischen Funktionen zur Erstellung von Geometrien.Neu: IduIT.Core.Kiss.Tip.ITooltipConfig unterstützt jetzt auch die Optionen maxWidth und maxHeight. Sehr große Tooltips (z.B. aus der Sachdatenanzeige) konnten sonst den kompletten Bildschirm überlagern.
Fix: IduIT.Core.Kiss.Ui.Grid.Grid - bei gruppierten Spalten war die Berechnung der Breite der Header-Spalte falsch, wenn deren Überschrift breiter war als die Summe der Überschriften der gruppierten Spalten. Dadurch kam es zu einer optischen Verschiebung gegenüber den Zellinhalten der Tabelle.
Neu:
IduIT.cardo.Core.CoreModules.Mapping.Ui.Grid.CoordinatesGrid
: Die Koordinatenlisten, wie aus der IduIT.cardo.Core.Applications.StandaloneWktProxy.Components.GeometryInfoComponent bekannt (Kontextmenüeintrag "Informationen zur Geometrie" an vielen Stellen) steht jetzt auch als einzelne Komponente zur Einbindung in Applikationen zur Verfügung.Die GeometryInfoComponent verwendet diese jetzt auch. Das Konfig-Objekt entspricht der Kiss IComponentConfig mit zusätzlich der Geometrie, deren Stützpunkte angezeigt werden sollen (null ist möglich).
Zu beachten ist, dass wie bei allen Grid-Komponenten entsprechende flex- bzw. height-Werte konfiguriert werden sollten, sonst bleibt es bei einer Höhe von 0 Pixeln.
Neu:
IduIT.Core.Kiss.Data.Group<TData>
hat jetzt ebenfalls eine Methode .indexOf(record: TData). Diese gibt den Index des Records in dieser Gruppe (wenn diese die unterste Stufe ist), oder rekursiv den Index in der entsprechenden Untergruppe zurück. Wenn der Datensatz nicht vorhanden ist, wird -1 zurückgegeben.Neu:
IduIT.Core.Kiss.Data.View<TData, TId>
verfügt jetzt über die Methode .indexOfInGroup(record: TData). Diese gibt den Index des Records innerhalb "seiner" Gruppe zurück. Wenn der View nicht gruppiert ist, wird das Ergebnis von .indexOf zurückgegeben. Wenn der Datensatz nicht vorhanden ist, wird -1 zurückgegeben.Neu: Die
IduIT.Core.Kiss.Ui.Grid.Column.RowNumberColumn
verwendet jetzt standardmäßig die Nummerierung innerhalb der Gruppe, wenn möglich. Zu beachten ist allerdings, dass bei aktivierter Gruppennummerierung die Tastaturnavigation ("springe zu Zeile") deaktiviert ist.Neu:
IduIT.Core.PropertyModel.Ui.Form.Form
Neu: Neues Attribut (serverseitig)
IEnumerableValueHandlerAsListAttribute
, hiermit kann die Darstellung von List-Elementen als Liste erzwungen werden.Neu: hat eine neue Property readOnly: boolean. Diese kann auch über die Konfig gesetzt werden. readOnly = true bewirkt, dass das alle Editor-Elemente "disabled" werden - also eine ReadOnly-Ansicht entsteht. Im Gegensatz zu Form.enabled = false deaktiviert dies aber nicht die Tab-Buttons.
Fix: Für komplexe Elemente wurden Fehler bei der Validierung und dem Auslösen des Change-Events behoben.
Fix: Der Aufruf von z.B. selectAll() oder selectRange(...) am
IduIT.Core.Kiss.Ui.Grid.Selection.MultiRowSelectionModel
und davon abgeleiteten Klassen konnte mit einem Laufzeitfehler scheitern, wenn das Grid zu diesem Zeitpunkt noch nicht fertig initialisiert war.Die Initialisierung erfolgt erstmalig bei Anzeige des Grids. Damit konnten entweder der Context des SelectionModels, oder die RowCollection des Context zu diesem Zeitpunkt noch 'undefined' sein.
In diesem Fall wird der Aufruf dieser Methoden jetzt verzögert, bis der Context fertig initialisiert wurde.
Neu: Update auf TypeScript 3.8 (bisher: 3.5)
Entwickeln Sie selber cardo Erweiterungen, sollten Sie auch auf diese TypeScript Version aktualisieren. Beachten Sie dazu die Änderungen zwischen Typescript 3.5 und TypeScript 3.8, Hilfreich sind die Breaking-Changes der TypeScript Dokumentation.
In der globalen tsconfig.base.json haben wir
"disableSourceOfProjectReferenceRedirect":true
hinterlegt, wir haben sonst einige Probleme bei Compile-On-Save beobachtet. Ggf. dieses in der eigenen tsconfig.json wieder deaktivieren.Ist die Umgebungsvariable IDU_TS_VERSION gesetzt, muss der Wert zu "3.8" geändert werden.
Neu: Die XML Layouts für das PropertyModel haben einen neue Eigenschaft "overrideBaseClass", in dem Fall können die geerbten Definitionen von Basisklassen überschrieben werden.
Neu:
Cardo4ApplicationProxy
:- die Methode
addMarkersFromIwanGeoms
wurde um eine optionale Style-Angabe erweitert
Neue Methoden:
showLayerInTree(layerName:string): void
Ermöglicht die Anzeige einer Ebene im Themenbaum. Zu übergeben ist der Ebenenname (LXXX).
startAnyDataSourceEditorForLayer(layerName:string): void
.Ermöglicht das Starten der AnyDataSource-Bearbeitung für eine Ebene. Zu übergeben ist der Ebenenname (LXXX).
selectRecordInGss(context: IduIT.cardo.Core.Applications.Gss.Enums.Context, topicTag: string): IduIT.Core.Web.Promise.IPromise<IduIT.cardo.Core.Applications.Gss.Components.Data.GssDataRecord>
Ermöglicht das Starten der GSS in einem Dialog und das Abrufen der dort getätigten Auswahl. Es ist der Kontext zu übergeben und der Tag des Topics, aus dem man die Daten abrufen will.
hasWktHandler(): boolean
- gibt zurück, ob bereits mitregisterWktHandler
ein WKT-Handler registriert wurde.addApplicationReadyHandler() : void
undapplicationReady(): void
- Hier kann man dem Proxy mitteilen, was getan werden soll, sobald die Anwendung bereit ist - und dann auch wann genau die Applikation bereit ist. Zum Beispiel:// TEIL A // Eine Anwendung mit einem äußeren und einem inneren Frame // Ein übergebener WKT kann erst verarbeitet werden, wenn der innere geladen ist. Das kann Cardo4 aber nicht wissen. // Wenn Cardo4 angedockt wird (äußerer Frame)... document.body.OnCardo324ApplicationProxyAttach = function (){ // Proxy var c4p = document.body.Cardo324ApplicationProxy; // Puffer für WKTS var wkts = []; // Wenn die Anwendung bereit ist: c4p.addApplicationReadyHandler(function (myApp) { // die aufgelaufenen WKTs verarbeiten wkts.forEach(function (w) { myApp.processWkt.call(myApp, w); }); }); c4p.registerWktHandler(function (wkt) { // die WKT vor dem Laden der Anwendung puffern. wkts.push(wkt); }); };
// TEIL B // Der innere Teil (Frame) der Anwendung // im onReady() // Proxy var c4p = parent.document.body.Cardo324ApplicationProxy; // Puffer für WKTS var wkts = []; // den Übergangshandler ersetzen - jetzt ist die Anwendung ja da: c4p.registerWktHandler(function (wkt) { // WKT verarbeiten this.processWkt(wkt); }); // Die Handler aufrufen, in diesem Fall mit der Anwendungsinstanz, welche processWkt(wkt) implementiert... c4p.applicationReady(this);
Alle Parameter (im Beispiel die Anwendungsinstanz) an applicationReady() werden genau so an die vorher registrierten Handler weitergegeben. Nach dem Aufruf der registrierten Handler wird die Liste derer geleert - ein weiterer Aufruf von applicationReady() tut also nichts.
Die Methode
tryConvertFilterToCardo3
hat jetzt zusätzlich einen optionalen Parameter geometryTypes welcher vom TypIduIT.Core.Geometry.GeometryTypeNames | IduIT.Core.Geometry.GeometryTypeNames[]
ist. Wenn dort ein GeometrieTyp oder ein Array übergeben wird, wird eine Fehlermeldung ausgegeben, wenn ein Geometriefilter mit falschem Typ übergeben wird.
- die Methode
Neu: Neue Klasse
IduIT.Core.Kiss.Ui.Tree.SearchMatchIterator
für einfaches Suchen in Bäumen.Neu: Neue Methode
setHTML(v:string)
fürKiss.Ui.Embed.IFrame
Neu: Neue Methode
Kiss.Lang.BLob.toString(blob: Blob)
Neu:
Kiss.Lang.Array.unique<T>(T[])
kann jetzt optional eine equalityCompareFn als zweiter Parameter übergeben werden, um auch verschiedene Instanzen von Objekten auf semantische Gleichheit prüfen zu können. Beispiel:// meineflaechen: IFlaeche[] mit { blattschnitte: ITk25[], geom: ... }; // ITk25 mit { blattnr: number, blattname: string } const tk25allerFlaechen = Kiss.Lang.Array.mapMany(meineFlaechen, f => f.blattschnitte); const uniqueTk25 = Kiss.Lang.Array.unique(tk25allerFlaechen, (a, b) => a.blattnr === b.blattnr);
Neu: Hilfskomponente
Kiss.Ui.DimensionalCharting.DcChartComponent
zur Unterstützung bei der Verwendung von DC-JS/Crossfilter-basierten Diagrammen.Neu: Neue Methode
Kiss.Lang.Date.createAsUtc(d: Date | null)
gibt ein neues Datum als UTC zurück, mit den selben Werten des d-Parameters.Fix: Wenn man in einem Formularfeld etwas eingetragen hat, dann programmatisch der Wert geändert wurde und dann den gleichen Wert noch einmal eingetragen hat, wurde bei Drücken der Enter-Taste im IE das Change-Event nicht mehr gefeuert.
Neu: Der
Kiss.Ui.Tree.Tree
hat jetzt eine Methode .whenInitialized(). Diese gibt ein Promise zurück, welches aufgelöst wird, wenn (falls oder sobald) der Tree initialisiert wurde.
3rd Party
- Update externer Bibliotheken:
- Monaco Editor (GeoCSS und für GeoSQL) Version 0.18
- TypeScript 3.5 zu 3.8.2
- Open XML SDK 2.7 zu 2.10.0
- Scriban von 1.2.7 auf 2.1.1
- Newtonsoft.Json 11.0.2 auf 12.0.3
Zuletzt geändert: 02.05.2024 16:25:23 (erstmals erstellt 07.06.2017)