Releases: NCEAS/metacatui
2.31.0
New features 🎉
Support for all Bioportal ontologies in the semantic search interface 🧠
The semantic search interface now supports all ontologies available in BioPortal, offering greater flexibility beyond the previous focus on the ECSO ontology’s MeasurementType sub-tree. As datasets increasingly incorporate annotations from a wider range of ontologies, the need for a more adaptable search experience became clear.
ontology-select-demo.mp4
Repositories can configure the set of ontologies the widget searches. The interface first identifies all classes used in datasets from the index, then cross-references BioPortal to replace class URIs with readable labels. Classes are grouped by ontology, and users can browse the list within each. Tooltips provide class descriptions and indicate the number of datasets annotated with each class.
To explore further, users can open a modal to view the full hierarchy of classes in the selected ontologies, complete with class descriptions and links to BioPortal.
This enhanced search functionality is now available in both portal searches and the main repository catalog search.
MetacatUI Helm chart ⚙️
The latest release of MetacatUI introduces support for deployment within Kubernetes using Helm charts. This feature streamlines the installation process and simplifies configuration management. For details on for deploying the Helm chart are available in the helm/README
file. This feature is under active development and we welcome feedback and contributions from the community!
Fine-grained control over the Cesium map layers 🌎
The layers that show in the Cesium map are now more customizable. For each layer, users can now choose whether the opacity slider is shown in the layer details panel and what happens when a feature is clicked.
For some layers, allowing viewers to change the opacity is not useful, so the showOpacitySlider
option can be set to false.
The clickFeatureAction
option allows users to choose what happens when a feature is clicked. The options are "showDetails" and "zoom". With show details, a layer panel pops up with additional info about the feature. With zoom, the map zooms into the bounding sphere for that feature. If no action is set, it defaults to the map-level behavior.
Misc improvements
- Bump rexml from 3.2.8 to 3.3.6 in /docs #2503
- Move
bytesToSize
method to Utilities module #2484 - Include links to child datasets in the parent dataset for nested data packages #2418
- Support Markdown in metadig report view #2394
- Update Formatic-UI to newest version (2.9) & improved functionality for the
SearchSelect
views #2253
Bug fixes 🛠️
- Bounding coordinates set to 0 don't display on dataset landing pages rendered from the index #2505
- Error rendering a LayerDetailsView in develop #2498
- Issues downloading single object from nested dataset #2424
- Issues rendering the response form the view service #2403
- Issues with Citation Display #2395
- Download All doesn't work for specific data package #2373
Developer notes
Note that to make use of the new ontology search interface, your repository will need to configure a bioportal API key (instructions here).
We've made the following changes to the MetacatUI codebase to improve the developer experience:
- Add recommended VS Code extensions #2504
- More flexible ES Lint rules: allow some unused variables and don't enforce import resolution #2475
New configuration options
bioportalApiBaseUrl
- The base URL for the BioPortal API. This is used to fetch the list of ontologies and classes for the semantic search interface. The default value ishttps://data.bioontology.org
and probably doesn't need to be changed.bioportalOntologies
- An array of BioPortal ontology IDs to search, each including the ontology acronym, human-readable name, and an optional icon and sub-tree.
Deprecated configuration options
bioportalSearchUrl
- Deprecated in favor of the newbioportalApiBaseUrl
.
See the complete changelog: 2.30.0...2.31.0
2.30.0
MetacatUI version 2.30.0 includes new features and improvements to the Cesium map interface, including the ability to bookmark and share map views, and a complete map legend. This release also includes several bug fixes and other minor improvements.
New features: Cesium map interface upgrades 🎉 🌎
Bookmark and share map views 📑
Users can now bookmark and share their current Cesium map view! This feature fosters collaboration by allowing users to share specific map views with stakeholders, colleagues, and the public. It also gives users the ability to save their current map view and return to it later.
Here's how it works: As the user interacts with the map, the URL in the browser address bar will update to reflect the current state of the map, including the location, zoom level, perspective, and any data layers that are currently displayed. This URL can be copied and shared with others, or saved for later use. When the URL is visited, the map will be restored to the same state as when the URL was copied. There is also a convenient share button that makes it easy to copy the URL to the clipboard.
For more information, see #1806.
Complete map legend 🎨
The Cesium map now displays a complete legend for each data layer that is displayed on the map. This legend provides a visual representation of the data values that are being displayed on the map, making it easier for users to interpret the data. The legend is displayed in collapsible a panel on the bottom left side of the map, and it updates automatically as the user shows or hides data layers.
This is a much-needed improvement to the simplified "mini-legend" displayed in the layer list. The new legend is more informative and easier to read, and it provides a better user experience for users who are exploring data on the map. The mini-legend is still displayed in the layer list for now, but it may be removed in a future release.
For more information, see #1784.
Misc improvements
- Automatically change target branch for dependabot PRs from
main
todevelop
#2456 - Remove references to deprecated Morpho software from themes #2402
- Cesium map: Migrate layer categories to used shared expansion panel view/model #2419
- Cesium map: Refactor Map model getAllLayers function to a collection of MapAsset #2400
Bug fixes 🛠️
- Update Node.js Version in GitHub Actions #2307
Developer notes
The map share button must be explicitly enabled in Cesium map configurations with the showShareUrl
configuration option. To work properly, it also requires that each layer in the map is configured with a unique layerId
property. See the mapConfig
docs for details.
The legend panel is enabled by default and does not require any additional configuration.
Example:
const mapConfig = {
showShareUrl: true,
layers: [
{
layerId: 'my-layer',
...
},
{
layerId: 'another-layer',
...
}
]
}
See the complete changelog: 2.29.1...2.30.0
2.29.1
This release prioritizes enhancements in code quality and consistency within MetacatUI, without introducing new features or fixing bugs. These changes are aimed at supporting developers and contributors, and do not alter the functionality or user experience of MetacatUI.
We have incorporated linting and formatting tools into our development workflow, including a defined style guide and automated code quality checks. These tools will help standardize the codebase, identify issues early, and enhance the development process.
🛠️ Tools Implemented
🎨 Prettier
Prettier automates code formatting to ensure consistency across the project, helping to improve readability, reduce merge conflicts, and maintain codebase integrity. Developers can use the npm run format
command to apply Prettier. With this release, the entire codebase has been reformatted to apply Prettier standards.
🔬 ESLint
As a static code analysis tool, ESLint helps identify errors and enforce coding standards. It's integrated into our workflow to assist developers in catching common errors, maintaining consistent coding styles, and adhering to best practices. The npm run lint
command is available for checking linting errors.
Our ESLint configuration aligns with the Airbnb JavaScript style guide, with modifications to accommodate RequireJS and JSDoc standards specific to MetacatUI. We are phasing in these standards, starting with new and modified code and gradually extending to the entire codebase.
Automated Checks with GitHub Actions
GitHub Actions have been set up to automatically verify formatting and linting errors on new pull requests, providing quick feedback to developers and speeding up the review process. These checks will run on pull requests, in addition to our existing unit tests and doc build test.
⚠️ Notice for Developers with MetacatUI Forks
The reformatting of the codebase with Prettier could cause merge conflicts with MetacatUI forks that have extensive customizations. Below is a guideline to help integrate these changes:
Integration Guidelines
- Make sure your fork is up to date with the previous release (version 2.29.0).
- Cherry pick the initial commit that configures and adds Prettier:
git cherry-pick 87dead8
- Run
npm install
to add Prettier as a development dependency, then runnpm run format
to apply Prettier formatting to all files. Commit the changes. - Cherry pick the next commit that applies Prettier formatting to the entire codebase.
git cherry-pick f33bf9e
. Resolve any resulting merge conflicts: conflicts should only arise where your fork has customizations, and not where there are simply formatting changes. - Integrate the remaining commits. As ESLint fixes are pending application to the codebase, subsequent merge conflicts should be minimal.
For further details on tool implementation and testing, review the discussion on the associated Pull Request and issue; our updated CONTRIBUTING guide, the ESLint configuration file, and the Prettier configuration file. For questions or assistance with the new tools, please contact us on Slack or through the GitHub discussion board.
2.29.0
This is a small release that mainly entails improvements to the Cesium map view.
New Features 🎉
New Cesium map features 🌍
Highlight regions of interest
The new "viewfinder" feature enables highlighting specific regions of interest in Cesium maps. With this feature, areas can be predefined in the map configuration, along with the layers that should be visible when the user navigates to that area. This creates a list of "views" that users can zoom to with a single click! See #2281 for more details.
Adjust imagery saturation
A new configuration option has been added to imagery assets in Cesium maps that enables adjusting the imagery's saturation, either making it more or less vibrant. This feature is especially useful when the imagery is overly bright or saturated, making it difficult to see vector data on top of it. See #2379 for more details.
Before & After:
Set the base color of the globe
A new feature has been introduced that allows users to change the base color of the globe in the Cesium map. When all layers are hidden, the default bright blue color can now be customized. The color can be set in the map configuration using the globeBaseColor parameter, which accepts hex codes or CSS colors. For more details, see #1904.
Cesium map & portal style updates 🎨
This release introduces several improvements to map and navigation styles. The layer list panel in Cesium maps has been widened to improve the visibility of long layer names, while the styling of the Feature Info panel has been enhanced with a wider modal, adjusted layout, spacing, and new animation when opened. The portal navigation bar styles have also been improved for both light and dark themes, resulting in a cleaner and more intuitive navigation experience. Additionally, various other styling improvements have been made to map components, including tweaks to vector pins, toolbar links, and other elements.
For more background on these changes, see #2342, #2344, #2346, #2358 & #2361.
Before & After:
Misc Improvements
- The default settings for the Metadata Assessment Suite have been updated. The FAIR suite version has been changed from "0.3.1" to "0.4.0" for the following parameters:
mdqSuiteIds
,mdqSuiteLabels
,mdqAggregatedSuiteIds
,mdqAggregatedSuiteLabels
- Fixed up some existing JSdocs #2366
- Issued new DOI for MetacatUI 2.29.0 #2367
Bug Fixes 🔨🔧
- Fixed missing ADC logo from portals #2364
See the complete changelog: 2.28.0...2.29.0
2.28.0
New features 🎉
File hierarchy view 🗄️
Some data packages make use of a file system structure to organize and present data files. Until now, MetacatUI was limited to displaying files in a flat structure. With this release, we introduce a new file hierarchy view that allows users to navigate through the organized file system of a data package! This long awaited feature is a step toward providing more comprehensive support for large and complex data packages, and will be especially useful for researchers who have organized their data in a hierarchical manner.
The new file hierarchy view is now visible on data packages that have already made use of the atLocation
attribute in their data packages, through tools like our R or Python APIs. Future releases will include the ability to view, create, and edit file hierarchies directly through the online editor!
Cesium Map Enhancements 🌍
This release introduces several enhancements to the Cesium map interface, including a new location search feature and improved data layer search and categorization. These updates are designed to streamline user access to specific geographical areas and improve the overall user experience when working with and exploring the Cesium map.
Location search
Maps now include a "viewfinder" feature that allows searching for and navigating to locations using latitude and longitude coordinates, a place name, an address, or a specific area of interest. This new feature makes it easier for users to quickly zoom to specific study areas, communities, or landmarks, and is especially beneficial for researchers who need to quickly view geographical data points in the map.
To enable this feature on your MetacatUI repository, make sure your have a a valid Google Maps API key configured in your app config that includes access to the Geocoding API and Places API. The feature can be enabled for a given map by setting the showViewfinder
option to true
in the map configuration. For more information about using the Cesium map, see the Cesium map and Cesium map for portals guides.
Layer search & categorization
Layers in Cesium maps are now more searchable and organized! Users can now search for specific data layers within the Cesium map interface, making it easier to find and access the data they need. In addition, layers can now be grouped into thematic categories, providing users with a more organized and intuitive way to navigate through the available data layers in a Cesium map. These enhancements are designed to improve the overall user experience when exploring maps with many data layers.
New map styling
A fresh 'light' theme is now available for portals, which currently apply updated styles to the Cesium map interface. Specifically, the light theme incorporates a new font and color scheme that enhances the visual appeal and readability. Other stylistic changes include refined visuals in the viewfinder and navigation help panels, along with updated styles within the details panel to ensure a consistent and intuitive user experience. A scroll bar has now been added to the Cesium layer list, essential for maps with extensive layers that exceed the window height.
Misc improvements
- Updated PR Guidelines: the CONTRIBUTING document now includes PR code review guidelines #2285
- Bump express from 4.18.1 to 4.19.2 #2332
- Bump nokogiri from 1.15.4 to 1.16.2 in /docs #2260
Bug fixes 🛠️
- Fix the URL method in new data catalog pager #2327
- Directly navigating to page does not work on the new catalog search #2328
- Extra objects added to URL pattern when navigating search pages #2325
- Fix GCMD keyword link in submission form #2284
- Cesium scale bar covers logged-in profile nav dropdown #2261
- Fix the NSF award API endpoint #2233
- Allow entry of -90 & 90 degrees latitude #2227
- Issue with Coordinate Input Regex Validation in EML Editor #2226
- Toolbar menu blocks clicking on Cesium Map #2207
- User menu cut off #1978
Developer notes
- The testing suite has been upgraded with new packages and tools. Developers are advised to run
npm install
in the root of the MetacatUI project to update local environments accordingly. Furthermore, a new pre-merge GitHub script has been introduced, which automatically runs tests and checks for JSDoc errors upon PR creation. Developers should address any errors flagged by this script prior to merging. - The documentation site now requires Ruby version 3.1 or higher. If running the docs site locally, developers should update their local Ruby installations to ensure compatibility #2306
- As detailed in the features section, enabling location search in Cesium maps requires a valid Google maps key. Developers should ensure that this key is obtained and configured properly to provide full functionality to users.
See the complete changelog: 2.27.1...2.28.0
2.27.1
Critical patch for compatibility with latest Chrome browser 🛠️
This patch addresses a critical issue affecting those using the latest version of the Chrome browser (Version 120.0.6099.71). This issue prevented the successful submission of datasets, resulting in error messages and partial dataset submissions.
The error was traced back to a parsing issue with system metadata (sysmeta) XML in the latest Chrome version, and impacts both the current as well as past versions of MetacatUI. The fix involved refactoring the accessRule.serialize()
and accessPolicy.serialize()
methods, resolving parsing issues with jQuery's replaceWith
method.
Thank you to our community members for promptly reporting this issue. Special thanks to dev team member @rushirajnenuji for his quick work in identifying and resolving the issue!
See the complete changelog: 2.27.0...2.27.1.
2.27.0
New Features 🎉
New Cesium Map Tools 🗺️
Polygon Drawing Tool:
This release introduces a tool for drawing arbitrary polygons on the Earth's surface within any Cesium map. Although not yet active, this feature paves the way for more advanced geospatial functionalities: future tools will enable plotting and downloading data subsets based on user-specified regions. For further details, see issue #2180.
Navigation Help:
The Cesium map now includes navigation instructions for new users. Accessible through a question mark icon, the new help panel offers guidance on map movements such as panning, zooming, and rotating. The help panel can also be customized to display tailored help text, like specific feedback instructions for a particular map. Details in issue #2173.
Geographic Coordinate Validation in the Editor ✍️
The EML editor now more thoroughly prevents the entry of invalid geographic coordinates. This means no more bounding boxes with inverted latitude and longitude values or those that erroneously span the international dateline or include the poles. It's a safeguard against common errors that can lead to issues in data interpretation and use. For more information, see issue #2159.
Misc Improvements
- Made Cesium Map models, views, & collections more modular (See #2189).
- Updated gems used to build the documentation website:
- Nokogiri: 1.13.9 → 1.15.4
- Github-pages: 214 → 228
- Minima (theme): 2.0 → 2.5
- Jekyll-feed (Atom feed generator): 0.6 → 0.15
- Tzinfo (time zone library): 1.2 → 2.0
- Activesupport: 6.0.6.1 → 7.1.1
- Additional dependencies: to their latest compatible versions
Bug Fixes 🛠️
- Addressed display issues with small bounding boxes on the Google maps on dataset landing pages (See #2198).
- Fixed a bug where the table-of-contents in portals was misplaced when the section content was short (See #2195).
- Resolved a display issue with the feature detail panel size in the Cesium map (See #2192).
- Corrected a bug that prevented an error message from being shown if the server returned an unexpected result on dataset landing pages (See #2144).
- Fixed a bug where new metadata records were sometimes being automatically populated with taxa information from previous records (relevant to repositories using the Quick Add taxa feature) (See #2196).
- Enabled KNB users to set their own datasets to private (See #2215).
Developer Notes 🔧
- The gem updates for the documentation site may require developers to re-run the
bundle install
command before building the documentation site withbundle exec jekyll serve
.
See the complete changelog: 2.26.0...2.27.0.
2.26.0
New features 🎉
Missing value codes in the attribute editor ✍🏻
Identifying missing values in data is essential for data interpretation reuse. The Ecological Metadata Language (EML) standard provides a way to identify missing values for each attribute in a data file. With this release, MetacatUI's attribute editor enables adding and editing missing value codes and their explanations.
This new interface appears in the modal window when a user clicks on the "Describe" button next to each data file in the data package editor. Recognizing that data can have multiple missing value indicators, the interface allows users to add multiple missing value codes and explanations for each attribute.
For more details, see #612.
Misc. Improvements
- Show all authors in citation #2152
- Add "information icon" to "Alternate Identifier" field #2103
- Link to ERP Page from web editor #2052
- Make the EML system attribute configurable in app model #441
Bug fixes 🛠️
- Portal search dropdown filters not working as expected when semantic annotations is one of the query fields #2174
- Map imagery disappears when navigating back to search page #2172
- No space between link elements when map layer
moreInfoLink
anddownloadLink
are both populated #2170 - In the catalog search, only limit search results to map area once user has interacted with map #2160
- Mailing list input field shows placeholder text when not active (DataONE theme) #2157
- Pagination near footer is not clickable (DataONE theme) #2156
- Do not capitalize identifier on dataset landing page #2154
Developer notes
New configuration options
emlSystem
- The text to use for the emlsystem
attribute. The system attribute indicates the data management system within which an identifier is in scope and therefore unique. In previous versions of MetacatUI this was hardcoded to "knb" - this remains remain the default value.
See the complete changelog: 2.25.0...2.26.0
2.25.0
New features 🎉
New Catalog Search View with Cesium 3D Maps 🌎
A re-designed catalog search view with Cesium 3D maps is now available in MetacatUI 2.25.0, enhancing the earlier version that was released as beta in MetacatUI 2.22.0. This new, flexible view replaces the previous Data Catalog View which relied on Google Maps, and makes it easier for repositories to customize their catalog search filters, select map layers, and adjust map display settings.
Cesium, being a 3D globe, is capable of accurately representing research data at the poles. The new view also expands the choice of map layers, allowing selections from ESRI, Bing, OpenStreetMap, or any tile server supporting WMS or WMTS.
Using the new Catalog, repositories can now customize the search filters on the left side of the view. Any fields available in the Solr index can be used to create a dropdown, text input, number slider, checkbox, or toggle filter that best suits the data in the repository.
To allow time for repositories to transition, the previous Data Catalog View with Google Maps will remain as the default view for now. However, the new catalog will be released immediately on the Arctic Data Center.
For more details, see #1520 and #1720.
Google Analytics 4 📊
With this update, MetacatUI now supports Google Analytics 4 (#1709) and has replaced the analytics.js
library with the gtag.js
library. GA4 facilitates the collection of more diverse types of data and offers more sophisticated analysis tools for your data repositories. This transition is required since Google will stop supporting old universal analytics on July 1st. To continue collecting data from Google Analytics after this date, repositories will need to upgrade to this release (2.25.0) and set the googleAnalyticsKey
configuration option to a GA4 property.
Changes to how MetacatUI handles analytics also serves as groundwork for eventually supporting other analytics tools in the future, see #2149.
Misc improvements
- Add metatags to portals for better SEO #2150
Features added to Cesium during the development of the new Catalog Search View include:
- Support Open Street Map layer in Cesium #2146
- Allow dynamic color palettes for cesium layers #2125
- Allow using RGBA values in the Cesium Color Palette #2124
- Allow configuring outlines in vector data sources in Cesium #2123
- Optimize GeoHash rendering #2119
Bug fixes 🛠️
- PubDate search filter not working in old catalog view #2151
Bugs in the beta version of the new Catalog Search View, fixed in this release, include:
- Handle page and query url consistently in CatalogSearchView #2113
- CatalogSearchView should navigate back to first page in new search #2112
- Fix CatalogSearchView display when there are no results #2111
- Limit drawing GeoHashes to the view extent in the Cesium map #2076
- Can't scroll to see all the filter options when they spill beyond the height of the window in the new CatalogSearchView #2071
- Geohash boxes float above the earth's surface in Cesium #2070
- Fix sizing of Geohash labels in the Cesium map #2066
- Geohashes in the Cesium map are added on zoom but not removed #2063
Developer notes
Configuring the New Catalog Search View & Cesium
To activate the new Catalog Search View, set the useDeprecatedDataCatalogView
configuration option to false
in the app model, and set enableCesium
to true
. For more detailed guidance on configuring the new view, please refer to our guide: https://nceas.github.io/metacatui/guides/catalog-view-config.html.
Configuring Google Analytics 4
On the MetacatUI side, all you need to do to make use of GA4 is to update your repository to this release (2.25.0) and set the googleAnalyticsKey
configuration option to a GA4 property. You can create and configure a new property in the Google Analytics platform console. Google will migrate most of your existing settings to the new property for you, and provides a setup assistant to help with the rest. For more information on how to set up a GA4 property, see [UA→GA4] Migration guide for beginners and Add a Google Analytics 4 property (to a site that already has Analytics).
New configuration options
description
- Use this property to provide a general description of the repository. This description will be used as the default description for the repository's metatags.googleAnalyticsKey
- This property should now be set to a GA4 property ID, rather than a universal analytics property ID.
See the Complete Changelog: 2.24.0...2.25.0
2.24.0
This minor release introduces a new feature for the EML Editor and adds a dedicated license file.
New feature 🎉
"Quick Add" Interface for Taxonomic Coverage 🔬
Populating the taxonomic classifications fields in the EML Editor is now easier. Repositories can configure a list of commonly used taxa relevant to their domain using the quickAddTaxa
property in the AppModel. This list will be used to create one or more dropdowns in the Editor, allowing users to add these taxa to their metadata quickly. (See #2086).
This interface provides the option of adding multiple taxa simultaneously, and lets users manually type in a taxon value when it is not included in the list. The content of the dropdowns can be configured in the quickAddTaxa
property in two ways: as a pre-defined list or as a seriesID linked to a JSON file stored within the repository. If a taxonId
is included in the config, this will be serialized into the EML.
License File 📄
In accordance with standard practice, we've added a standalone license file. While the license was previously indicated in the README, it is now available in a separate, dedicated file. (See #2118).