Skip to content
This repository has been archived by the owner on Dec 18, 2023. It is now read-only.

Commit

Permalink
Merge pull request #648 from thehyve/rc
Browse files Browse the repository at this point in the history
Release version 2.0.14.
  • Loading branch information
gijskant authored Apr 22, 2021
2 parents aba3d02 + 675bfd4 commit a88c463
Show file tree
Hide file tree
Showing 20 changed files with 939 additions and 249 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ os: linux
dist: xenial
language: node_js
node_js:
- '10'
- '12'
- '14'

services:
- xvfb
Expand Down
100 changes: 65 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
# Glowing Bear
# ![](docs/images/glowingbear.png) Glowing Bear
[![Build Status](https://travis-ci.org/thehyve/glowing-bear.svg?branch=dev)](https://travis-ci.org/thehyve/glowing-bear/branches)
[![codecov](https://codecov.io/gh/thehyve/glowing-bear/branch/dev/graph/badge.svg)](https://codecov.io/gh/thehyve/glowing-bear)

An [Angular]-based frontend application for clinical data selection and analysis
based on [TranSMART]. Visit https://glowingbear.app for more information.

![](docs/images/Cohort-selection.png)

## Development

If you are interested in additional features, like visual analytics or using a custom format for data export,
see the [extentions](#extensions) section for details.

Expand Down Expand Up @@ -73,12 +77,12 @@ Here are settings you would need to modify for that:
| `env.oidc-server-url` | URL of the identity provider that is used by the glowingbear and transmart. |
| `env.oidc-client-id` | The OpenID Connect Client name. |

WARNING: tests alter state. All saved queries are deleted.
:warning: WARNING: tests alter state. All saved queries are deleted.



### How to deploy
We use Gradle to create bundles that are suitable for deployment:
### How to publish
We use Gradle to create bundles that are suitable for publication:

```bash
# Create a tar bundle in build/distributions
Expand All @@ -88,7 +92,7 @@ gradle assemble
gradle publish
```

The latest release is [glowing-bear-2.0.13.tar](https://repo.thehyve.nl/service/local/repositories/releases/content/nl/thehyve/glowing-bear/2.0.13/glowing-bear-2.0.13.tar).
The latest release is [glowing-bear-2.0.14.tar](https://repo.thehyve.nl/service/local/repositories/releases/content/nl/thehyve/glowing-bear/2.0.14/glowing-bear-2.0.14.tar).

Published snapshot bundles are available in the `snapshots` repository
on https://repo.thehyve.nl with id `nl.thehyve:glowing-bear:0.0.1-SNAPSNOT:tar`.
Expand All @@ -104,9 +108,45 @@ For creating a new release, increase the version in [package.json](package.json)
Make sure the `publishing.repositories.maven.url` property
in [build.gradle](build.gradle) is set to a release repository.

### Dimension icons

Glowing bear has a list of icons defined for basic subject dimensions:
- patients
- diagnoses
- biosources
- biomaterials
- images

If there is a new dimension, it will have a default icon. In order to customize this,
for each new dimension that needs to be supported
a new icon has to be added in [icon-helper file](src/app/utilities/icon-helper.ts).

## Extensions

All extensions require a proper configuration, as described in [configuration](#configuration) section.

### Experimental analysis

To use interactive visual analytics, you need to install [Fractalis back-end] and,
either install [Fractalis front-end] from the repository, or use a [`npm` package](https://www.npmjs.com/package/fractalis).

### Export service

To be able to use additional export formats, install [transmart-packer].



## Installation

## Configuration
For installation using *docker-compose*, see [glowing-bear-docker](https://github.com/thehyve/glowing-bear-docker).

For installation using *Puppet*, follow the instructions on [puppet-transmart_core](https://github.com/thehyve/puppet-transmart_core).

*Manual installation* is explained in the [installation instructions](docs/installation.md).



## Configuring Glowing Bear

The application can be configured by changing the `env.json` and `config.*.json`
files in `app/config`.
Expand All @@ -115,19 +155,31 @@ Example `env.json` (allowed values are `default`, `dev` and `transmart`):

```json
{
"env": "dev"
"env": "default"
}
```
Example `config.dev.json`:
Example `config.default.json`:

```json
{
"api-url": "https://transmart.example.com",
"api-url": "/api/transmart-api-server",
"api-version": "v2",
"gb-backend-url": "https://gb-backend.example.com",
"tree-node-counts-update": true,
"autosave-subject-sets": false,
"oidc-server-url": "https://keycloak.example.com/auth/realms/{realm}/protocol/openid-connect"
"gb-backend-url": "/api/gb-backend",
"doc-url": "https://glowingbear.app",
"enable-fractalis-analysis": false,
"autosave-subject-sets": true,
"show-observation-counts": false,
"instant-counts-update": false,
"include-data-table": false,
"include-cohort-subscription": false,
"oidc-server-url": "${KEYCLOAK_SERVER_URL}/realms/${KEYCLOAK_REALM}/protocol/openid-connect",
"oidc-client-id": "${KEYCLOAK_CLIENT_ID}",
"export-mode": {
"name": "packer",
"data-view": "basic_export",
"export-url": "/api/transmart-packer"
},
"check-server-status": true
}
```

Expand All @@ -153,28 +205,6 @@ Supported properties in the `config.*.json` files:
| `deny-access-to-users-without-role` | `false` | Deny access to users without any roles assigned to them. The corresponding configuration needs to be set for the backends.


### Dimension icons

Glowing bear has a list of icons defined for basic subject dimensions:
- patients
- diagnoses
- biosources
- biomaterials
- images

If there is a new dimension, it will have a default icon. In order to customize this,
for each new dimension that needs to be supported
a new icon has to be added in [icon-helper file](src/app/utilities/icon-helper.ts).

## Extensions

To use interactive visual analytics, you need to install [Fractalis back-end] and,
either install [Fractalis front-end] from the repository, or use a [`npm` package](https://www.npmjs.com/package/fractalis).

To be able to use additional export formats, install [transmart-packer].

All extensions require a proper configuration, as described in [configuration](#configuration) section.


## License

Expand Down
18 changes: 12 additions & 6 deletions cypress/support/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,21 @@
import 'cypress-file-upload';

Cypress.Commands.add('toggleNode', (nodeName, options = {}) => {
const node = cy.get('.ui-treenode').contains(nodeName).parent().parent();
node.scrollIntoView().should('be.visible');
node.children('.ui-tree-toggler').click('right');
const node = cy.get('.ui-treenode').contains(nodeName)
.parent().parent().children('.ui-tree-toggler');
node.scrollIntoView().should('be.visible').wait(100);
cy.get('.ui-treenode').contains(nodeName)
.parent().parent().children('.ui-tree-toggler')
.click();
});

Cypress.Commands.add('toggleVariableNode', (nodeName, options = {}) => {
const node = cy.get('.gb-variables-tree-container').contains(nodeName).parent().parent();
node.scrollIntoView().should('be.visible');
node.children('.ui-tree-toggler').click('right');
const node = cy.get('.gb-variables-tree-container').contains(nodeName)
.parent().parent().children('.ui-tree-toggler');
node.scrollIntoView().should('be.visible').wait(500);
cy.get('.gb-variables-tree-container').contains(nodeName)
.parent().parent().children('.ui-tree-toggler')
.click();
});

Cypress.Commands.add('toggleVisibleNode', (nodeName, options = {}) => {
Expand Down
2 changes: 1 addition & 1 deletion cypress/support/step_definitions/cohort-save.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ then('the cohort {string} is saved', (cohortName) => {
});

then('the cohort {string} is deleted', (cohortName) => {
cy.get('.ng-trigger-tabContent').eq(1).contains(cohortName).should('not.be.visible');
cy.get('.ng-trigger-tabContent').eq(1).contains(cohortName).should('not.exist');
});

then('the current cohort has biomaterial selected', () => {
Expand Down
11 changes: 3 additions & 8 deletions cypress/support/step_definitions/constraint-creation.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
when("I use public study {string} as a constraint", (studyName) => {
// cy.contains('Public Studies ').parent().parent().children('.ui-tree-toggler').click();

cy.toggleNode('Public Studies ');
cy.drag(studyName).drop(0);

Expand Down Expand Up @@ -28,7 +26,7 @@ when("I select study Oracle_1000_Patient but exclude from categorical_10, Stomac

cy.drag('categorical_10 ').drop(0);

cy.contains('Stomach').should('not.be.visible');
cy.contains('Stomach').should('not.exist');
cy.get('.ui-multiselect-label').contains('9 items selected').should('be.visible');

cy.get('.ui-multiselect-label').contains('9 items selected').click();
Expand Down Expand Up @@ -128,10 +126,7 @@ then("concept constraint is wrapped into combination box", () => {

when("the root dimension and box descriptions for pedigree constraint are correct", () => {
cy.get('.gb-constraint-dimension-dropdown').eq(0).contains('patient');
cy.get('.gb-constraint-container').eq(0).should('not.have.class', 'gb-constraint-dimension-dropdown');
cy.get('.gb-constraint-container').eq(0).children('gb-combination-constraint')
cy.get('.gb-constraint-container-root').eq(0).should('not.have.class', 'gb-constraint-dimension-dropdown');
cy.get('.gb-constraint-container-root').eq(0).children('gb-combination-constraint')
.should('not.have.class', 'gb-constraint-dimension-dropdown');
});



4 changes: 2 additions & 2 deletions cypress/support/step_definitions/cross-table.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ then('A cross table should show up', () => {
then('Drag CATEGORICAL_VALUES:Demography:Race from tree view to row zone', () => {
// collapse cohorts panel
cy.get('.ui-accordion-header').contains('Cohorts').click();
cy.get('gb-variables').find('loading-container').should('not.be.visible');
cy.get('gb-variables').find('loading-container').should('not.exist');
cy.toggleVariableNode('Public Studies ');
cy.toggleVariableNode('CATEGORICAL_VALUES ');
cy.toggleVariableNode('Demography');
Expand All @@ -33,7 +33,7 @@ then('Cross table has Latino and Caucasian labels', () => {
then('Drag Oracle_1000_Patient:Categorical_locations:categorical_12 from tree view to column zone', () => {
// collapse cohorts panel
cy.get('.ui-accordion-header').contains('Cohorts').click();
cy.get('gb-variables').find('loading-container').should('not.be.visible');
cy.get('gb-variables').find('loading-container').should('not.exist');
cy.toggleVariableNode('Public Studies ');
cy.toggleVariableNode('Oracle_1000_Patient ');
cy.toggleVariableNode('Categorical_locations');
Expand Down
18 changes: 11 additions & 7 deletions cypress/support/step_definitions/variable-import.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
given('I unselect all variables', () => {
cy.get('.loading-container').should('not.be.visible');
cy.get('.checkAllText').find(".ui-chkbox").click();
})
cy.get('.loading-container').should('not.exist');
cy.get('.gb-variables-tree-container').contains('Public Studies ');
cy.get('gb-variables').find('.checkAllText').contains('180 variables selected').should('be.visible');
cy.wait(500);
cy.get('.checkAllText').find('.ui-chkbox').click({scrollBehavior: false});
cy.wait(500);
cy.get('gb-variables').find('.checkAllText').contains('0 variables selected').should('be.visible');
cy.get('.gb-export-section-banner').contains('No data selected');
});

when('I import variables with {string}', (fileName) => {
const fileType = 'application/json';
const fileInputSelector = 'gb-variables input[type=file]';

cy.get('gb-variables').find('.import-btn').click();
cy.get('gb-variables').find('.import-btn').click({scrollBehavior: false});
cy.get(fileInputSelector).attachFile(fileName);
});

then('The number of selected variables should be {string}', (numberString) => {
cy.get('gb-variables').find('.checkAllText').contains(numberString);
cy.get('gb-variables').find('.checkAllText').contains(numberString).should('be.visible');
});
2 changes: 1 addition & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM nginx:alpine

ARG GB_VERSION="2.0.13"
ARG GB_VERSION="2.0.14"
ARG GB_SRC_REPOSITORY="releases"

ENV GB_SRC_URL https://repo.thehyve.nl/service/local/artifact/maven/redirect?r=${GB_SRC_REPOSITORY}&g=nl.thehyve&a=glowing-bear&v=${GB_VERSION}&p=tar
Expand Down
2 changes: 1 addition & 1 deletion docker/config.template.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"instant-counts-update": false,
"include-data-table": false,
"include-cohort-subscription": false,
"oidc-server-url": "${KEYCLOAK_SERVER_URL}/auth/realms/${KEYCLOAK_REALM}/protocol/openid-connect",
"oidc-server-url": "${KEYCLOAK_SERVER_URL}/realms/${KEYCLOAK_REALM}/protocol/openid-connect",
"oidc-client-id": "${KEYCLOAK_CLIENT_ID}",
"export-mode": {
"name": "packer",
Expand Down
Binary file added docs/images/Administrator role.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/Assign impersonation role.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/Client mappers.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/Cohort-selection.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/Components.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/Create audience client mapper.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/System user roles.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/glowingbear.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit a88c463

Please sign in to comment.