From 81dff43a5982ce5f13ab352f533442706dc4d1db Mon Sep 17 00:00:00 2001 From: Xiao Gui Date: Mon, 1 Feb 2021 16:50:22 +0100 Subject: [PATCH] hotfix: backwards compatibility with urls in kg --- docs/releases/v2.3.3.md | 5 +++++ e2e/src/advanced/urlParsing.prod.e2e-spec.js | 18 +++++++++++++++++- e2e/util/selenium/base.js | 5 +++++ mkdocs.yml | 1 + package.json | 2 +- src/atlasViewer/atlasViewer.urlUtil.ts | 2 +- 6 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 docs/releases/v2.3.3.md diff --git a/docs/releases/v2.3.3.md b/docs/releases/v2.3.3.md new file mode 100644 index 000000000..43cc750c2 --- /dev/null +++ b/docs/releases/v2.3.3.md @@ -0,0 +1,5 @@ +# v2.3.2 + +## Bugfixes + +- fix backwards compatibility with some URLs diff --git a/e2e/src/advanced/urlParsing.prod.e2e-spec.js b/e2e/src/advanced/urlParsing.prod.e2e-spec.js index d9ba92944..4a95357e7 100644 --- a/e2e/src/advanced/urlParsing.prod.e2e-spec.js +++ b/e2e/src/advanced/urlParsing.prod.e2e-spec.js @@ -74,8 +74,23 @@ describe('> url parsing', () => { expect(red).toEqual(blue) }) + it('> [bkwards compat] if ill defined labelIndex for regionsSelected are defined, should handle gracefully', async () => { + const url = '/?parcellationSelected=JuBrain+Cytoarchitectonic+Atlas&templateSelected=MNI+Colin+27&navigation=0_0_0_1__-0.2753947079181671_0.6631333827972412_-0.6360703706741333_0.2825356423854828__3000000__-17800000_-6700000_-7500000__200000®ionsSelected=142&niftiLayers=https%3A%2F%2Fneuroglancer.humanbrainproject.org%2Fprecomputed%2FJuBrain%2Fv2.2c%2FPMaps%2FBforebrain_4.nii' + await iavPage.goto(url) + await iavPage.clearAlerts() + await iavPage.wait(5000) + await iavPage.waitForAsync() + const log = await iavPage.getLog() + const filteredLog = log.filter(({ message }) => !/Access-Control-Allow-Origin/.test(message)) + + // expecting some errors in the console. In catastrophic event, there will most likely be looped errors (on each render cycle) + expect( + filteredLog.length + ).toBeLessThan(50) + }) + it('> if niftiLayers are defined, parcellation layer should be hidden', async () => { - const url = `/?templateSelected=MNI+152+ICBM+2009c+Nonlinear+Asymmetric&parcellationSelected=JuBrain+Cytoarchitectonic+Atlas&niftiLayers=https%3A%2F%2Fneuroglancer.humanbrainproject.eu%2Fprecomputed%2FJuBrain%2F17%2Ficbm152casym%2Fpmaps%2FVisual_hOc1_r_N10_nlin2MNI152ASYM2009C_2.4_publicP_a48ca5d938781ebaf1eaa25f59df74d0.nii.gz` + const url = `/?parcellationSelected=JuBrain+Cytoarchitectonic+Atlas&templateSelected=MNI+Colin+27&navigation=0_0_0_1__-0.2753947079181671_0.6631333827972412_-0.6360703706741333_0.2825356423854828__3000000__-17800000_-6700000_-7500000__200000®ionsSelected=142&niftiLayers=https%3A%2F%2Fneuroglancer.humanbrainproject.org%2Fprecomputed%2FJuBrain%2Fv2.2c%2FPMaps%2FBforebrain_4.nii` await iavPage.goto(url) await iavPage.clearAlerts() @@ -149,4 +164,5 @@ describe('> url parsing', () => { expect(visibleArr.length).toEqual(3) expect(visibleArr).toEqual([true, true, true]) }) + }) diff --git a/e2e/util/selenium/base.js b/e2e/util/selenium/base.js index ffc990ab1..8a858a1eb 100644 --- a/e2e/util/selenium/base.js +++ b/e2e/util/selenium/base.js @@ -98,6 +98,11 @@ class WdBase{ return result } + async getLog() { + const browserLog = await this._browser.manage().logs().get('browser') + return browserLog + } + async getRgbAt({ position } = {}, cssSelector = null){ if (!position) throw new Error(`position is required for getRgbAt`) const { x, y } = verifyPosition(position) diff --git a/mkdocs.yml b/mkdocs.yml index 92408b0da..7afc5fcad 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -40,6 +40,7 @@ pages: - Fetching datasets: 'advanced/datasets.md' - Display non-atlas volumes: 'advanced/otherVolumes.md' - Release notes: + - v2.3.3: 'releases/v2.3.3.md' - v2.3.2: 'releases/v2.3.2.md' - v2.3.1: 'releases/v2.3.1.md' - v2.3.0: 'releases/v2.3.0.md' diff --git a/package.json b/package.json index f6c13d3a2..128ee791f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "interactive-viewer", - "version": "2.3.2", + "version": "2.3.3", "description": "HBP interactive atlas viewer. Integrating KG query, dataset previews & more. Based on humanbrainproject/nehuba & google/neuroglancer. Built with angular.io", "scripts": { "dev-server-export": "webpack-dev-server --config webpack.export.js", diff --git a/src/atlasViewer/atlasViewer.urlUtil.ts b/src/atlasViewer/atlasViewer.urlUtil.ts index 59640205e..ec9bbeebf 100644 --- a/src/atlasViewer/atlasViewer.urlUtil.ts +++ b/src/atlasViewer/atlasViewer.urlUtil.ts @@ -145,7 +145,7 @@ const parseSearchParamForTemplateParcellationRegion = (searchparams: URLSearchPa const selectedRegionsParam = searchparams.get('regionsSelected') if (selectedRegionsParam) { const ids = selectedRegionsParam.split('_') - return ids.map(labelIndexId => getRegionFromlabelIndexId({ labelIndexId })) + return ids.map(labelIndexId => getRegionFromlabelIndexId({ labelIndexId })).filter(v => !!v) } const cRegionsSelectedParam = searchparams.get('cRegionsSelected')