Documentation

12 Changelog

In the following paragraphs we've listed an aggregated result of changes specific to this version of Oskari. Following the links below you can access full notes of different components.

12.1 Frontend release notes

For a full list of changes see: https://github.com/oskariorg/oskari-frontend/milestone/48?closed=1

12.1.1 Publisher

Most of publisher tools have been migrated from jQuery to React. For users, this means they need to be listed on a different panel in publisher than the jQuery-based tools. For applications with custom publisher tools, this is a good time to migrate the application specific tools to React.

We will be migrating the whole publisher UI to React in a future release where jQuery-based tools will either break or not be listed on the publisher UI. Before that happens we still need to migrate the (jQuery-based) tool for GFI-popup where we are moving the theming related settings for it under the theming panel.

Publisher tools that control plugins under mapmodule have been moved from publisher to mapmodule (bundles/mapping/mapmodule/publisher/tools.js)).

Fixed an issue that allowed an embedded map to be opened on the publisher even when the projection on the embedded map did not match the current map projection. Now the popup for this is modal and prevents modifying an embedded map with the wrong projection and forces the user to reload the page with the proper projection before allowing editing.

12.1.2 Admin

  • admin-layereditor now shows the layers parsed capabilities JSON in the JSON tab instead of the Additional tab
  • admin-users bundle now separates the built-in system roles from any additional roles listing to improve usability.
  • admin-permissions now show unsaved changes on the UI and the handling for changes have been refactored.
  • admin-layereditor now offers a button to remove saved default style for layer when all styles have been removed from the service (capabilities). This uncommon situation could not be solved through the UI until now and resulted in annoying popup for admins.
  • announcements now default to banner instead of popup since this is the more likely option for announcements.

12.1.3 Other changes

  • layerswipe has been migrated to React and now supports touch screens as well. But due to changes in OpenLayers now does not work properly on vector layers with transparency.
  • statsgrid publisher tools now includes a button to open data search for statistical data. This enables changing the statistical data indicators while editing a previously published map.
  • statsgrid React-implementations of search and user indicator UIs and statehandling has been refactored for maintainability (https://github.com/oskariorg/oskari-frontend/pull/2737).
  • mydata no longer shows "show on map" for embedded maps listing as it was a bit misleading. To preview the map the user can click the name like before to open the embedded map in another browser window.
  • BackgroundLayerSelectionPlugin now shows a "no selection" text if the configured layers are not available instead of defaulting to the name of the layer that is already on the map.
  • metadataflyout has been rewritten with React and can be switched on main.js by importing bundles/catalogue/metadata/bundle.js.
  • metadataflyout actions tab now filters layers properly instead of listing too many.
  • metadatasearch now checks if there are advanced search options available before showing a link to show them (The options are not available by default on Geonetwork 4.x with GetDomain not implemented: https://github.com/geonetwork/core-geonetwork/issues/4727)
  • timeseries restoring saved state (on embedded maps/saved views) wasn't working as expected and now it is.
  • featuredata selecting features by drawing a selection on map is now more user-friendly.
  • mapmodule now has a getVersion() function that returns the version of the map engine implementation (OpenLayers/Cesium version depending on the 2D/3D map implementation).
  • removed some resource files like unused pngs and (s)css that are no longer used.
  • 3D time control plugin has been migrated to React.
  • drawtools fixed an issue where stopping a drawing with other id than the current one also stopped the current drawing (https://github.com/oskariorg/oskari-frontend/pull/2711).

12.1.4 Changes to UI component library

Most UI components that use AntD directly or through the oskari-ui component library needs to be wrapped with <ThemeProvider> with import { ThemeProvider } from 'oskari-ui/util';. Otherwise they will use for example different font than the rest of the UI. ThemeProvider includes the new Theming mechanism for AntD 5 components. See https://github.com/oskariorg/oskari-frontend/pull/2668 for examples. Notes about AntD 5 migration: https://ant.design/docs/react/migration-v5

  • ColorPicker component has been changed to use the one from AntD component library.
  • RichEditor (WYSIWYG-text editor) component implementation has been changed from (no longer maintained) draft-js to (maintained) jodit.
  • Button component now also exposes a ThemedButton that uses theming values.
  • Slider component now also exposes a ThemedSlider that uses theming values.
  • TextIcon is a new component that can include text as value but can be treated like SVG-icons.
  • Message component now has a fallback-prop that can be used to render something else if the requested localization is not found.
  • Message component added a bunch of unused onClick handlers to the UI for debugging purposes. It no longer does this by default, but the debugging can be activated when needed (https://github.com/oskariorg/oskari-frontend/pull/2736)

12.1.5 Library updates

Added a guide for dependency updates that can be used to document restrictions and other notes for consideration when updating dependencies.

  • OpenLayers 7.2.2 -> 9.2.4
  • cesium 1.91 -> cesium/engine 10.1.0 (required a post install script for oskari-frontend)
  • olcs 2.13.1 -> 2.20 (2.21.0 released after this update is required when updating to OpenLayers 10: https://github.com/openlayers/ol-cesium/commit/fa317f96d1621c4bce17482a581de82eb83c9517)
  • antd 4.24.8 -> 5.21.6 (changes to many React components. See antd migration notes)
  • @ant-design/icons 4.6.3 -> 5.5.1
  • node-sass replaced with sass which allows to use newer node.js version. Oskari-frontend can now use at least node 18 & 20 instead of being limited to node 16.
  • webpack 3.43.0 -> 4.47.0
  • webpack-cli 3.3.11 -> 4.10.0
  • webpack-dev-server 3.8.0 -> 4.15.2
  • expose-loader 0.7.5 -> 1.0.3 (see changes in https://github.com/oskariorg/oskari-frontend/pull/1751 if used on apps directly)
  • loader-utils -> removed as unnecessary
  • babel 7.23.5 -> 7.25.2
  • jest 27.0.6 -> 29.7.0 (required new dependency jest-environment-jsdom)
  • other less interesting dependencies, see package.json for details
  • storybook -> removed for now as updating it is a bigger task and it had a lot of old dependencies that flagged a lot of false positives on scans. The stories.js files are still on the codebase with hopes to restore this and make it more visible part of Oskari development in the future.

12.2 Migration guide

12.2.1 Frontend

The AntD component library has been upgraded from version 4 to 5. You might need to update application specific components. See details in: https://ant.design/docs/react/migration-v5

Frontend package.json scripts need to be updated due to webpack-cli upgrade. The scripts like start, build previously passed variables to build process like this --env.appdef=applications. These need to be modified by changing the dot to a space like this --env appdef=applications. Passing similar env-variables from command line also need to be passed without the dot: https://github.com/oskariorg/sample-application/pull/35

A React implementation for metadataflyout bundle has been added. The bundle id hasn't changed so database migration is not needed. Update main.js to make the switch on your application: https://github.com/oskariorg/sample-application/pull/36/commits/67749457e045b2383ac7a361f5dc87699a8e1ddc

Storybook dependency has been removed from oskari-frontend for now: https://github.com/oskariorg/oskari-frontend/pull/2662 If you have any *.stories.js files you might need to adjust them: https://github.com/oskariorg/sample-application/pull/36/commits/8712dd55045a4956cc847287b5ac3ffcce7da088

12.2.2 service-webapp / WebappHelper

Moved fi.nls.oskari.servlet.WebappHelper to new path org.oskari.init.OskariInitializer. This file is usually not customized so the change shouldn't have any effect on most instances. However if you have an override for the WebappHelper OR for example the SpringInitializer (that calls the WebappHelper) on your app you will need to update the references (it's a drop-in replacement). The new OskariInitializer allows overriding the database migration code with your own. See https://github.com/oskariorg/oskari-server/pull/1061 for details.

12.3 Server release notes

For a full list of changes see: https://github.com/oskariorg/oskari-server/milestone/49?closed=1

12.3.1 Support for WMS-T intervals added

Added parsing for WMS-T time dimension intervals. Layers with this kind of timeseries information should now work like ones that have explicit time dimension list. Note that these kinds of layers might have very short time period and might require updating very frequently. An example could be a weather forecast. The time dimension is parsed as part of the capabilities and stored on the database soon these kinds of layers you should make the layer automatically update capabilities on the layer admin UI AND look into running UpdateCapabilitiesJob more frequently than the default (once per day). If you have these types of layers, here's a cronline for oskari-ext.properties to run the capabilities updating scheduled job every 10 minutes:

oskari.scheduler.job.UpdateCapabilitiesJob.cronLine=*/10 * * * * ?

Note! These two settings work separately but together to achieve updating capabilities automatically. The scheduled job runs at certain pace that has been set to check any layers where the difference between current time and the timestamp for last capabilities update is more than the value set for that layers capabilities update interval. In that case the capabilities are updated on the database and the timestamp is updated. Any value on the layer capabilities update that is smaller than the frequency of the scheduled job won't have a meaningful result as the capabilities update frequency is ultimately decided by when the scheduled job is run.

12.3.2 Statistical data processing improvements

12.3.3 Performance and maintenance improvements

12.3.4 Updated libraries

  • Jetty (in the download package zip) 9.4.51.v2023021 -> 9.4.56.v20240826
  • Postgresql JDBC 42.7.2 -> 42.7.4
  • Spring framework: 5.3.35 -> 5.3.39
  • Spring security: 5.7.12 -> 5.7.13
  • mybatis 3.5.15 -> 3.5.16
  • log4j 2.22.1 -> 2.24.1
  • Geotools 28.4 -> 28.5
  • org.apache.xmlgraphics/fop 2.9 -> 2.10
  • org.apache.poi/poi-ooxml 5.2.5 -> 5.3.0
  • commons-io 2.15.0 -> 2.16.1
  • Jackson 2.16.1 -> 2.18.1
  • pdfbox 2.0.30 -> 2.0.32
  • h2database 2.2.220 -> 2.2.224

Notes:

  • GeoTools 29.x requires Java 17+
  • Flyway 10.x requires Java 17+
  • HikariCP 5.x requires Java 11+
  • h2 v2.3.230+ requires Java 11+