diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 86e33b82..e671b553 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -5,6 +5,25 @@ Changelog for the SODAR project. Loosely follows the
`Keep a Changelog `_ guidelines.
+v0.15.1 (2024-09-12)
+====================
+
+Changed
+-------
+
+- **Samplesheets**
+ - Upgrade Vue app dependencies (#1986)
+
+Fixed
+-----
+
+- **Landingzones**
+ - Invalid CSS classes set by zone status update (#1995)
+- **Samplesheets**
+ - ``generic`` assay plugin inline links pointing to ``ResultsReports`` (#1982)
+ - ``generic`` assay plugin cache update crash with row path built from ontology column (#1984)
+
+
v0.15.0 (2024-08-08)
====================
diff --git a/config/settings/base.py b/config/settings/base.py
index 940142d9..02694f2b 100644
--- a/config/settings/base.py
+++ b/config/settings/base.py
@@ -611,7 +611,7 @@ def set_logging(level=None):
# General API settings
-SODAR_API_DEFAULT_VERSION = '0.15.0'
+SODAR_API_DEFAULT_VERSION = '0.15.1'
SODAR_API_ALLOWED_VERSIONS = [
'0.7.0',
'0.7.1',
@@ -634,6 +634,7 @@ def set_logging(level=None):
'0.14.1',
'0.14.2',
'0.15.0',
+ '0.15.1',
]
SODAR_API_MEDIA_TYPE = 'application/vnd.bihealth.sodar+json'
SODAR_API_DEFAULT_HOST = env.url(
diff --git a/docs_manual/source/api_documentation.rst b/docs_manual/source/api_documentation.rst
index d3a24676..958920d9 100644
--- a/docs_manual/source/api_documentation.rst
+++ b/docs_manual/source/api_documentation.rst
@@ -45,7 +45,7 @@ expected version.
.. code-block:: console
- Accept: application/vnd.bihealth.sodar+json; version=0.15.0
+ Accept: application/vnd.bihealth.sodar+json; version=0.15.1
Specific sections of the SODAR API may require their own accept header. See the
exact header requirement in the respective documentation on each section of the
diff --git a/docs_manual/source/api_examples.rst b/docs_manual/source/api_examples.rst
index 54417255..15b32fc6 100644
--- a/docs_manual/source/api_examples.rst
+++ b/docs_manual/source/api_examples.rst
@@ -43,7 +43,7 @@ the SODAR API:
# Use core_headers for project management API endpoints
core_headers = {**auth_header, 'Accept': 'application/vnd.bihealth.sodar-core+json; version=0.13.4'}
# Use sodar_headers for sample sheet and landing zone API endpoints
- sodar_headers = {**auth_header, 'Accept': 'application/vnd.bihealth.sodar+json; version=0.15.0'}
+ sodar_headers = {**auth_header, 'Accept': 'application/vnd.bihealth.sodar+json; version=0.15.1'}
.. note::
diff --git a/docs_manual/source/api_irodsinfo.rst b/docs_manual/source/api_irodsinfo.rst
index 19148d43..355c6f82 100644
--- a/docs_manual/source/api_irodsinfo.rst
+++ b/docs_manual/source/api_irodsinfo.rst
@@ -22,4 +22,4 @@ SODAR version:
.. code-block:: console
- Accept: application/vnd.bihealth.sodar+json; version=0.15.0
+ Accept: application/vnd.bihealth.sodar+json; version=0.15.1
diff --git a/docs_manual/source/api_landingzones.rst b/docs_manual/source/api_landingzones.rst
index de1f53eb..0167fdd8 100644
--- a/docs_manual/source/api_landingzones.rst
+++ b/docs_manual/source/api_landingzones.rst
@@ -32,4 +32,4 @@ SODAR version:
.. code-block:: console
- Accept: application/vnd.bihealth.sodar+json; version=0.15.0
+ Accept: application/vnd.bihealth.sodar+json; version=0.15.1
diff --git a/docs_manual/source/api_samplesheets.rst b/docs_manual/source/api_samplesheets.rst
index b97d8cbf..bbcceb8d 100644
--- a/docs_manual/source/api_samplesheets.rst
+++ b/docs_manual/source/api_samplesheets.rst
@@ -68,4 +68,4 @@ SODAR version:
.. code-block:: console
- Accept: application/vnd.bihealth.sodar+json; version=0.15.0
+ Accept: application/vnd.bihealth.sodar+json; version=0.15.1
diff --git a/docs_manual/source/conf.py b/docs_manual/source/conf.py
index 07530672..8559785a 100644
--- a/docs_manual/source/conf.py
+++ b/docs_manual/source/conf.py
@@ -26,7 +26,7 @@
author = 'BIH Core Unit Bioinformatics'
# The full version, including alpha/beta/rc tags
-release = '0.15.0'
+release = '0.15.1'
# -- General configuration ---------------------------------------------------
diff --git a/docs_manual/source/metadata_advanced.rst b/docs_manual/source/metadata_advanced.rst
index 5b70a885..1f5eac6e 100644
--- a/docs_manual/source/metadata_advanced.rst
+++ b/docs_manual/source/metadata_advanced.rst
@@ -179,7 +179,7 @@ investigation file.
- Inline links
* Comments define semicolon-separated lists of columns to be linked to
collections.
- * *SODAR Assay Link Results* |rarr| ``ResultsReports``
+ * *SODAR Assay Link ResultsReports* |rarr| ``ResultsReports``
* *SODAR Assay Link MiscFiles* |rarr| ``MiscFiles``
* *SODAR Assay Link Row* |rarr| ``RowPath``
* For example:
diff --git a/docs_manual/source/sodar_release_notes.rst b/docs_manual/source/sodar_release_notes.rst
index 5229d2c8..e7fe6994 100644
--- a/docs_manual/source/sodar_release_notes.rst
+++ b/docs_manual/source/sodar_release_notes.rst
@@ -8,6 +8,16 @@ list of changes in current and previous releases, see the
:ref:`full changelog`.
+v0.15.1 (2024-09-12)
+====================
+
+Release for minor updates, maintenance and bug fixes.
+
+- Fix generic assay plugin issues
+- Upgrade critical dependencies
+- Minor updates and bug fixes
+
+
v0.15.0 (2024-08-08)
====================
diff --git a/landingzones/static/landingzones/js/landingzones.js b/landingzones/static/landingzones/js/landingzones.js
index 371c5f8c..6a3a1e52 100644
--- a/landingzones/static/landingzones/js/landingzones.js
+++ b/landingzones/static/landingzones/js/landingzones.js
@@ -51,7 +51,8 @@ var updateZoneStatus = function() {
) {
statusTd.text(zoneStatus);
statusTd.removeClass();
- statusTd.addClass(statusStyles[zoneStatus] + ' text-white');
+ statusTd.addClass(
+ 'sodar-lz-zone-status ' + statusStyles[zoneStatus] + ' text-white');
statusInfoSpan.text(zoneStatusInfo);
if (['PREPARING', 'VALIDATING', 'MOVING', 'DELETING'].includes(zoneStatus)) {
statusTd.append(
diff --git a/samplesheets/assayapps/generic/plugins.py b/samplesheets/assayapps/generic/plugins.py
index 1eec422c..8f517ac6 100644
--- a/samplesheets/assayapps/generic/plugins.py
+++ b/samplesheets/assayapps/generic/plugins.py
@@ -12,7 +12,7 @@
# Local constants
APP_NAME = 'samplesheets.assayapps.generic'
-RESULTS_COMMENT = 'SODAR Assay Link Results'
+RESULTS_COMMENT = 'SODAR Assay Link ResultsReports'
MISC_FILES_COMMENT = 'SODAR Assay Link MiscFiles'
DATA_COMMENT_PREFIX = 'SODAR Assay Row Path'
DATA_LINK_COMMENT = 'SODAR Assay Link Row'
@@ -65,9 +65,13 @@ def _link_from_comment(cell, header, top_header, target_cols, url):
return True
# Special case for Material Names
if (
- top_header['value']
- in th.DATA_FILE_HEADERS + th.MATERIAL_NAME_HEADERS
- ) and (header['value'] == 'Name'):
+ (
+ top_header['value']
+ in th.DATA_FILE_HEADERS + th.MATERIAL_NAME_HEADERS
+ )
+ and top_header['value'].lower() in target_cols
+ and (header['value'] == 'Name')
+ ):
cell['link'] = f"{url}/{cell['value']}"
return True
# Handle everything else
@@ -83,11 +87,11 @@ def _get_col_value(cls, target_col, row, table):
"""
Return value of last matched column.
- :param target_col: Column name to look for
+ :param target_col: Column name string to look for.
:param row: List of dicts (a row returned by SampleSheetTableBuilder)
:param table: Full table with headers (dict returned by
SampleSheetTableBuilder)
- :return: String with cell value of last matched column
+ :return: String with cell value of last matched column.
"""
# Returns last match of row
value = None
@@ -96,7 +100,12 @@ def _get_col_value(cls, target_col, row, table):
header = table['field_header'][i]
if header['value'].lower() == target_col.lower():
value = row[i]['value']
- return value
+
+ if isinstance(value, str):
+ return value
+ elif isinstance(value, list) and len(value) == 1: # OntologyTermRefs
+ return value[0]['name']
+ return None
def get_row_path(self, row, table, assay, assay_path):
"""
diff --git a/samplesheets/vueapp/package-lock.json b/samplesheets/vueapp/package-lock.json
index c451069b..da69140a 100644
--- a/samplesheets/vueapp/package-lock.json
+++ b/samplesheets/vueapp/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "samplesheets",
- "version": "0.15.0",
+ "version": "0.15.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "samplesheets",
- "version": "0.15.0",
+ "version": "0.15.1",
"dependencies": {
"bootstrap-vue": "^2.22.0",
"core-js": "^3.23.5",
@@ -3128,16 +3128,6 @@
"@types/json-schema": "*"
}
},
- "node_modules/@types/eslint-scope": {
- "version": "3.7.7",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
- "dev": true,
- "dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
- }
- },
"node_modules/@types/estree": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
@@ -5516,9 +5506,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001651",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz",
- "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==",
+ "version": "1.0.30001660",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz",
+ "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==",
"dev": true,
"funding": [
{
@@ -13179,9 +13169,9 @@
}
},
"node_modules/micromatch": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
- "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"dependencies": {
"braces": "^3.0.3",
@@ -17341,12 +17331,11 @@
}
},
"node_modules/webpack": {
- "version": "5.93.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz",
- "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==",
+ "version": "5.94.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
+ "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
"dev": true,
"dependencies": {
- "@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
"@webassemblyjs/ast": "^1.12.1",
"@webassemblyjs/wasm-edit": "^1.12.1",
@@ -17355,7 +17344,7 @@
"acorn-import-attributes": "^1.9.5",
"browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.17.0",
+ "enhanced-resolve": "^5.17.1",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
diff --git a/samplesheets/vueapp/package.json b/samplesheets/vueapp/package.json
index f0eeff6a..1acb3387 100644
--- a/samplesheets/vueapp/package.json
+++ b/samplesheets/vueapp/package.json
@@ -1,6 +1,6 @@
{
"name": "samplesheets",
- "version": "0.15.0",
+ "version": "0.15.1",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",