# Changelog

## Introduction <a href="#introduction" id="introduction"></a>

JMap Cloud NG is a fork of the first generation of JMap NG that was the official JMap Server/JMap Cloud web client up until JMap Server Kathmandu.

JMap Cloud NG is the official NG Client for JMap Cloud. JMap Cloud NG is **only** compatible with JMap Cloud. All JMap Server specific capabilities of JMap Cloud NG have been removed after the fork from JMap NG (first generation).

### v1.0.44 (2024-07-02) <a href="#v1.0.18-2024-03-18" id="v1.0.18-2024-03-18"></a>

#### Features and improvements ✨ <a href="#features-and-improvements" id="features-and-improvements"></a>

* Allow creating Thematics on-the-fly. It is now possible to add a custom Style Rule (Thematic) to an existing layer in NG for JMap Cloud. A detailed example is available [here](https://k2geospatial.github.io/jmapcloud-ng-types/latest/functions/JMap.Layer.Thematic.addThematic.html). This thematic is only available during the current session, it is not persisted.
  * Mew API methods:
    * &#x20;`JMap.Layer.Thematic.addThematic(params)`
    * `JMap.Layer.Thematic.deleteThematic(layerId, thematicId)` (delete any thematic, client-side, for the current session only)
* `JMap.Map.resetSelectionStyle()` , a new API method to reset the selection style of a layer that was previously modified with `JMap.Map.setSelectionStyle()`&#x20;
* New options for API method `JMap.Application.Print.takeCapture` : &#x20;
  * `(... ,customRatioWidth, customRatioHeight)`  lets specify a custom aspect ratio for the generated image

#### Bug fixes 🐞 <a href="#bug-fixes" id="bug-fixes"></a>

* Measurements panel; error when selecting Nautical Miles as the unit for an area measure
* Fix several problems with dynamic filters when working with Date or DateTime attributes

### v1.0.37 (2024-06-17) <a href="#v1.0.18-2024-03-18" id="v1.0.18-2024-03-18"></a>

#### Features and improvements ✨ <a href="#features-and-improvements" id="features-and-improvements"></a>

* Support snapping on layer elements in all draw environments (feature creation, measures, annotations)
  * New API methods:
    * `JMap.Feature.getByLayerId(layerId, bbox)` (retrieves features from a layer)
    * `JMap.Application.Annotation.setSnapEnabled(enabled)`
    * `JMap.Application.Annotation.setSnapLayerId(layerId)`
    * `JMap.Application.Geometry.setSnapEnabled(enabled)`
    * `JMap.Application.Geometry.setSnapLayerId(layerId)`
    * `JMap.Application.Measure.setSnapEnabled(enabled)`
    * `JMap.Application.Measure.setSnapLayerId(layerId)`
* make `JMap.Application.Print.takeCapture` return a data URL instead of triggering a browser download
  * modified API method: `JMap.Application.Print.takeCapture(returnAsDataUrl)`
* Added the `JMap.Map.setSelectionStyle()` method to set the selection style of a layer. Allows developer to change the selection style of a layer see [this page](https://k2geospatial.github.io/jmapcloud-ng-types/latest/functions/JMap.Map.setSelectionStyle.html) for details

#### Bug fixes 🐞 <a href="#bug-fixes" id="bug-fixes"></a>

* fix problem when calling `JMap.Feature.getByIds` with too many IDs
* fix problem when calling `JMap.Layer.Search.byAttribute` with too many attribute values
* Unable to use ''Ctrl+V'' with a numeric value in a dynamic filter on a layer
* `ngExtent` url startup param is not working anymore
* Measure panel doesn't scroll
* fix marker registration when creating a new point feature in geometry creation panel
* `JMap.Layer.attributeExists()` does not work
* Export selection as Excel file is broken
* Layer names in selection panel are visible when they overflow the panel's width
* "Recenter the Map" widget does not work properly
* The last character of the result of the substring function is missing in the mouseover.

#### Breaking changes ![:warning:](https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/standard/caa27a19-fc09-4452-b2b4-a301552fd69c/32x32/26a0.png) <a href="#breaking-changes" id="breaking-changes"></a>

* New CRS support refactoring:
  * Modified API methods:
    * `JMap.Projection.reprojectLocation()` is now asynchronous
    * `JMap.Projection.reprojectBoundaryBox()` is now asynchronous
  * Removed API methods:
    * `JMap.Map.isLayerRendered()` has been removed
    * `JMap.Map.getLayersVisibilityStatus()` has been removed
    * `JMap.Map.getLayersVisibilityStatusAsArray()` has been removed
    * `JMap.Map.getRenderedJMapLayerIds()` has been removed

### v1.0.18 (2024-03-18) <a href="#v1.0.18-2024-03-18" id="v1.0.18-2024-03-18"></a>

#### Features and improvements ✨ <a href="#features-and-improvements" id="features-and-improvements"></a>

* Improve mouseover display
* Add support for JMap Cloud Simple Search feature
  * JMap Cloud now supports a global search mechanism for finding information in any indexed patial data sources or in a whole project through all its indexed spatial data sources (`/rest/v1/organizations/{organization}/spatialdatasources/{spatialdatasource}/search` and `/rest/v1/organizations/{organization}/projects/{project}/search`)
  * Added API methods:
    * `JMap.SimpleSearch.setQueryString(queryString: string)`
    * `JMap.SimpleSearch.getMinimumQueryStringLength()`
    * `JMap.SimpleSearch.getInvalidQueryStringCharacters()`
  * New API events:
    * `JMap.Event.SimpleSearch.on.success`
    * `JMap.Event.SimpleSearch.on.error`
* Add support for 3D DEM
  * When opening a project that has an associated DEM file, the DEM is displayed on the map
  * New API methods:
    * `JMap.Map.isTerrainAvailable()`
    * `JMap.Map.isTerrainActive()`
    * `JMap.Map.setTerrainActive(active:boolean)`
* let the user choose between EPSG:4326 (Lat-Lon) and the project’s CRS for the mapInfo widget coordinates

#### Bug fixes 🐞 <a href="#bug-fixes" id="bug-fixes"></a>

* Error calculating extent for a WMTS service
* Mouseover horizontal scrollbar appears for nothing
* Modify UI to ask for current password when changing password
* Login page, problem entering Username and Password fields
* Problem downloading map captures from the Exportation / Print Tool section (with MapLibre)
* An hyperlink in an attribute doesn’t work in the mouseover
* JMap.Feature.getByIds() method doesn’t display retrieved features on the map
* Unable to sort columns in attribute table for selected features
* Problems interpreting dates in string (ISO)
* Removed Thematic Legend Title and Legend Subtitle from UI
* Open JMap Cloud NG with an URL using `ngSearch` query param does not work

#### Breaking changes ![:warning:](https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/standard/caa27a19-fc09-4452-b2b4-a301552fd69c/32x32/26a0.png) <a href="#breaking-changes" id="breaking-changes"></a>

* Removed conditional logic in JMap Cloud NG for switching between JMap Cloud and JMap Server
  * Removed API methods:
    * `JMap.Server.getType()`
    * `JMap.Server.isSaas()`
    * `JMap.Server.isLegacy()`
    * `JMap.Server.getMinimumVersion()`
  * Modified API methods:
    * `JMap.Feature.deleteByIds()` now returns a `Promise<JId>` instead of a `Promise<GeoJSON.Feature>`
  * removed/renamed/modified types/enums/interfaces:
    * removed `JSERVER_TYPES`
    * renamed `JSERVER_SAAS_STATUS` to `JSERVER_STATUS`
    * renamed `JServerSaasService` to `JServerService`
    * renamed `JServerSaasServiceById` to `JServerServiceById`
    * `JJMapCloudPasswordPolicyCompliance`
    * removed `JMinimumServerVersion`
    * removed `title` and `subTitle` from `JLayerThematic`
    * `JJMapCloudPasswordPolicyCompliance` renamed to `JJMapPasswordPolicyCompliance`
    * removed `refreshToken` from `JTokenInfo`
