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 theJSON
tab instead of theAdditional
tabadmin-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 importingbundles/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 aThemedButton
that uses theming values.Slider
component now also exposes aThemedSlider
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
- Statistical data indicator list parsing for SotkaNet now skips faulty indicators instead of stopping processing entirely when encountering one.
- Statistical regionsets are now processed by removing any duplicated regions: https://github.com/oskariorg/oskari-server/pull/1084
- Statistical regionsets from resource files now support mixed geometries: https://github.com/oskariorg/oskari-server/pull/1085
12.3.3 Performance and maintenance improvements
- Refactored layer permission query on map startup. Instances with lots of layers may see significant boost on page loading time (GetAppSetup might go from seconds to milliseconds: https://github.com/oskariorg/oskari-server/pull/1067).
- Added a hook that allows applications to use custom code for running migrations like using a different user to run them etc: https://github.com/oskariorg/oskari-server/pull/1061
- Reduced noise in the logs by removing proxying errors from audit-logging.
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+