All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Please view this file on the master branch, on stable branches it's out of date.
- User can select segmentation run mode before start (@mkasztelnik)
- Possibility to configure custom Ansys licenses for pipeline computation (@mkasztelnik)
pipeline_identifier
case_number
andtoken
computation script helpers (@mkasztelnik)- Ability to parameterize UI elements according to platform type (EurValve or Process) (@patrykwojtowicz, @JanKapala)
- Use Gitlab review procedure instead of labels (@mkasztelnik)
stage_in
returns error code when unable to download FileStore file (@mkasztelnik)- Set JWT token expiration time to 24h (@mkasztelnik)
- Computation script repositories removed from
eurvalve.yml
, step repository configuration used instead (@mkasztelnik)
- Fix unused pipeline title missing (@mkasztelnik)
- Fixed GitLab integration spec (@Nuanda)
- Upgrade Sprockets gem to avoid CVE-2018-3760 vulnerability (@mkasztelnik)
- Added AVD/MVD ratio to patients' statistics (@Nuanda)
- Profile link for left avatar picture and user name (@mkasztelnik)
- Colors for patient tile connected with last pipeline status (@mkasztelnik)
- Instruction how to remove concrete IP from rack-attack fail2ban list (@mkasztelnik)
- User cannot be removed or blocked when she/he owns exclusively group (@mkasztelnik)
- Button to minimize left menu is visible always (@mkasztelnik)
- Dedicated information about deleted pipeline owner (@mkasztelnik)
- Reintegration of segmentation service using File Store in place of OwnCloud (@jmeizner)
- Remove
brakeman
fromGemfile
and use latest version while executinggitab-ci
checks (@mkasztelnik) - Trigger segmentation start after whole input file is uploaded (@mkasztelnik)
- Remove
faker
gem and replace it withfactory_bot
sequences (@mkasztelnik)
- Patients' statistics work correctly when turbolink-loaded (@Nuanda)
- Fix
GITLAB_HOST
markup formatting inREADME.md
(@mkasztelnik)
- Reload pipeline step status on patient view (@mkasztelnik)
- Reload segmentation status after it is started (@mkasztelnik)
- Proper handling for rimrock computation start failure (@mkasztelnik)
- Execution time updated each second for active computation (@mkasztelnik)
- Pipeline specific input (@mkasztelnik)
- Patient clinical details now includes patient's state (preop/postop) (@Nuanda)
- New statistics about the current state of EurValve's prospective cohort (@Nuanda)
- Labels for pipelines list view improved (@mkasztelnik)
- Segmentation temp file is removed from local disc after it is transferred into segmentation Philips service (@mkasztelnik)
- Use stages instead of types in Gitlab CI yml (@mkasztelnik)
- Upgrade to rubocop 0.51.0 (@mkasztelnik)
- Use addressable gem to parse URLs (@mkasztelnik)
- Upgraded rails into 5.1.4 and other gems into latest supported versions (@mkasztelnik)
- Change
factory_girl
intofactory_bot
(@mkasztelnik) - Use preconfigured docker image for builds (@mkasztelnik)
- Extracted DataSets::Client from Patients::Details for reusability (@Nuanda)
- Lock redis version into 3.x (@mkasztelnik)
- New patient case widget to reflect new developments in pipelining (@Nuanda)
- Flow model class which stores information about pipeline flow steps (@mkasztelnik)
- Switch from PhantomJS into Chrome headless (@mkasztelnik)
- Add escaping in the documentation pdp curl example (@mkasztelnik)
- Unique while fetching resources in pdp (@mkasztelnik)
- Change comparison
show
method toindex
(@mkasztelnik) - Pipeline steps definition refactored and generalized (@mkasztelnik)
- Change defaults for data sets (@mkasztelnik)
- Change the default root path to patients index (@Nuanda)
- Renamed
not_used_flow
intounused_steps
(@mkasztelnik)
- Remove n+1 query when updating computation status (@mkasztelnik)
- Sidebar's hamburger button is operational properly toggling the left menu (@dharezlak)
- Fix patient web socket unsubscribe (@mkasztelnik)
- Patient and pipeline creation silent failures (@jmeizner)
- Show started rimrock computation source link (@mkasztelnik)
- Parameter extraction pipeline step (@amber7b)
- Automatic and manual pipeline execution mode (@mkasztelnik)
- Pipeline flows (pipeline with different steps) (@jmeizner)
- Configure redis based cache (@mkasztelnik)
- Add cache for repositories tags and versions (@mkasztelnik)
- Manual gitlab-ci push master to production step (@mkasztelnik)
- Patient details are fetched from the external data set service and shown in the patient page (@dharezlak)
- Possibility to configure automatic pipeline steps during pipeline creation (@mkasztelnik)
- Wrench automatic pipeline step icon when configuration is needed (@mkasztelnik)
- Add extra pipeline steps for CFD, ROM, 0D, PV visualization and uncertainty analysis (@amber7b)
- Computation update interval can be configured using ENV variable (@mkasztelnik)
- Add loading indicator when reloading current pipeline step (@mkasztelnik)
- Show manual pipeline steps during pipeline creation (@mkasztelnik)
- External data set service is called to fetch patient's inferred details (@dharezlak)
- Additional mocked pipelines and pipelines steps (@mkasztelnik)
- Show pipeline details (flow and owner) (@Nuanda)
- Design new pipeline disabled button (@mkasztelnik)
- Links to 4 EurValve datasets query interfaces (@mkasztelnik)
- Add possibility to configure data sets site path though ENV variable (@mkasztelnik)
- Add link to segmentation status output directory (@mkasztelnik)
- Show computation error message (@mkasztelnik)
- Gitlab endpoint can be configured using ENV variable (@mkasztelnik)
- Gitlab clone url can be configured though ENV variable (@mkasztelnik)
- Add
clone_repo(repo)
script generator helper (@mkasztelnik)
- Segmentation run mode can be configured using yaml or ENV variable (@mkasztelnik)
- Default segmentation run mode changed into 3 (@mkasztelnik)
- Patient.case_number now used as patient ID in HTTP requests (@amber7b)
- Computation update interval changed into 30 seconds (@mkasztelnik)
- Load patient details only when needed (@mkasztelnik)
- Patient's case number is now easily available in the script generator (@dharezlak)
- Fetch patient details timeout set to 2 seconds (@mkasztelnik)
- Patient details loaded using ajax (@mkasztelnik)
- Don't show run segmentation button when segmentation is active (@mkasztelnik)
- Don't show blank option for pipeline mode (@mkasztelnik)
- Patient age inferred value expressions changed to conform with values coming from real data sets (@dharezlak)
- File browsers embedded in the pipeline views sort contents by date descendingly (@dharezlak)
- Output from one pipeline is not taken as different pipeline input (@mkasztelnik)
- Change step status after segmentation is submitted (@mkasztelnik)
- Error when deleting a pipeline which has data files (@jmeizner)
- Set segmentation status to failure when zip cannot be unzipped (@jmeizner)
- Don't create webdav structure when pipeline cannot be created (@mkasztelnik)
- Show error details when pipeline cannot be created (@mkasztelnik)
- Fix proxy expired email title (@mkasztelnik)
- JSON query requesting inferred patient details updated to comply with data set service's new API (@dharezlak)
- Don't show run button when manual pipeline and proxy is not valid (@mkasztelnik)
- Update computation status after computation is started (@mkasztelnik)
- Extract computations_helper GitLab host name to an env variable (@Nuanda)
- Fix segmentation status update after WebDav computation finished (@mkasztelnik)
- rack-attack bans are logged to
log/rack-attack.log
(@mkasztelnik) - Show user email in admin users index view (@mkasztelnik)
- Pipeline step script generation uses ERB templates (@mkasztelnik)
- Blood flow computation is self-contained - Ansys files are downloaded from git repository (@mkasztelnik)
- Gitlab integration services (list branches/tags and download specific file) (@amber7b)
- Comparison of image files in pipeline comparison view (@amber7b)
- Fetch computation slurm start script from Gitlab (@mkasztelnik)
- Pipeline comparison view uses OFF viewers to show 3D mesh differences (@dharezlak)
- Enabled selection of rimrock computation version (@jmeizner, @mkasztelnik)
- Brakeman security errors check is executed by Gitlab CI (@mkasztelnik)
- Data sets API reference added to the Help section as a separate entry (@dharezlak)
- Use action cable (web sockets) to refresh computation (@mkasztelnik)
- Computation stores information about selected tag/branch and revision (@mkasztelnik)
- Pipelines comparison shows sources diff link to GitLab (@Nuanda)
- Upgrade to ruby 2.4.1 (@mkasztelnik)
- Upgrade dependencies (@mkasztelnik)
- Upgrade to rails 5.1.2 (@mkasztelnik)
- Update rubocop to 0.49.1 (@mkasztelnik)
- Move
Webdav::Client
intoapp/models
to avoid auto loading problems (@mkasztelnik) - OFF viewer's height in pipeline's compare mode takes half of the available width (@dharezlak)
- Patient case_number is checked for unsafe characters (@Nuanda)
- Patient left menu focus when showing patient pipeline computation (@mkasztelnik)
- Avoid n+1 queries in patient view (@mkasztelnik)
- Disable turbolinks in links to cloud view (turbolinks does not work well with GWT) (@mkasztelnik)
- Fix random failing test connected with html escaping user name in generated emails (@mkasztelnik)
- Fix content type mismatch for file stage out (@mkasztelnik)
- Turn on
files
integration tests (@mkasztelnik) - Fix missing tooltip messages for queued computation state (@mkasztelnik)
- Preventing WebDAV folder creation for patients with incorrect case_number (@Nuanda)
- Pipelines have own DataFiles which represent produced results (@Nuanda)
- Pipelines comparison view which present differences between files of two Pipelines (@Nuanda)
- Segmentation output is unzipped into pipeline directory (@amber7b, @mkasztelnik)
- Store in FileStore heart model computation PNG results (@mkasztelnik).
- Integration tests (tag "files") are run by GitlabCI (@mkasztelnik)
- File browser template for multiple embed mode created (@dharezlak)
- WebDAV synchronisation takes care for pipeline-related and patient input files (@Nuanda)
- Computations are executed in the pipeline scope (@mkasztelnik)
- Move FileStore configuration into one place (@mkasztelnik)
- Make patient
case_number
factory field unique (@mkasztelnik) - Redirect user back to previous page after proxy is regenerated successfully (@mkasztelnik)
- Prefix is removed from segmentation outputs (@mkasztelnik)
- Show compare two pipelines button only when there is more than on pipeline (@mkasztelnik)
- DataFile#handle removed since it is not going to be used anymore (@Nuanda)
- Policy management API handles paths with escaped characters well and limits path scope to a single service (@dharezlak)
- Move and copy policy API calls handle well resources with escaped characters (@dharezlak)
- Copy and move destinations for policy management API treated as pretty paths for proper processing (@dharezlak)
- JS resources required for the OFF viewer are loaded in the file browser direct embed mode (@dharezlak)
- Resource pretty path decodes and encodes values according to URI restrictions (@dharezlak)
- Local path exclusion validation query fixed (@ddharezlak)
- Proxy warning is shown only for active Rimrock computations (@mkasztelnik)
- Correct computation tooltip text on pipelines list (@mkasztelnik)
- When removing policies via API access method existence check is scoped to a given service (@dharezlak)
- Set Rimrock computation job id to nil while restarting computation (@mkasztelnik)
- Show missing patient outputs on pipeline diff view (@mkasztelnik)
- Path processing fixed for policy move/copy operations invoked via API (@dharezlak)
- Set correct order for pipelines computations (@mkasztelnik)
- JWT token parameter name changed to access_token for the data sets subpage request URL (@dharezlak)
- JWT token passed as a URL query parameter for the data sets subpage (@dharezlak)
- JWT token structure description updated (information about
sub
record) in documentation (@mkasztelnik)
sub
changed from integer into string (which is required by specification) (@mkasztelnik)
- Basic rack-attack configuration (@mkasztelnik)
- Patient pipelines (@mkasztelnik)
- Patient/Pipeline file store structure is created while creating/destroying patient/pipeline (@mkasztelnik)
- Segmentation patient case pipeline step (@tbartynski)
- User id was added into JWT token using
sub
key (@mkasztelnik)
- Update rubocop into 0.47.1, fix new discovered offenses (@mkasztelnik)
- JWT token expiration time extended to 6 hours (@mkasztelnik)
- Change zeroclipboard into clipboard.js because support for flash is dropped (@mkasztelnik)
- Factories fields which should be unique use unique Faker methods (@mkasztelnik)
- Simplify Webdav operations for FileStore and OwnCloud (@mkasztelnik)
- PLGrid left menu removed since we are not showing any item there (@mkasztelnik)
- PLGrid patient data synchronizer removed. FileStore is the only supported backend (@mkasztelnik)
- Left menu can be scrolled when high is small (@mkasztelnik)
- Policy API filters policies according to the service identified by the passed id (@dharezlak)
- A 404 error code is returned instead of the 500 code when copying/moving policy for a non-existent source policy (@dharezlak)
- All user groups assignments are removed while user is deleted from the system (@mkasztelnik)
- Default Patient Case File Synchronizer changed into WebDav (@mkasztelnik)
- Data sets page url can be overwritten with an environment property (@dharezlak)
- Fixed pushing tag into production from different branch than master (@mkasztelnik)
- Policy API filters policies according to the service identified by the passed id (@dharezlak)
- PLGrid proxy details shown in the profile view, warning shown when proxy is outdated while active computations are present (@mkasztelnik)
- Support for running specs with JS support (@mkasztelnik)
- When a computation finishes the patient view is automatically reloaded in order to show the user the latest files produced by the computation (@Nuanda)
- OD Heart model is now incorporated in the patient case pipeline (@Nuanda)
- Show alert when unable to update patient files or run computations because PLGrid proxy is outdated (@mkasztelnik)
- User with active computations is notified (via email) while proxy expired (@mkasztelnik)
- Users management view redesigned, added possibility to remove user by admin (@mkasztelnik)
- Set plgrid login in OpenId request while regenerating proxy certificate (@mkasztelnik)
- Long living JWT tokens can be generated using internal API (@mkasztelnik)
- Resource paths support wildcard characters through UI and API (@dharezlak)
- User can download patient case computation stdout and stderr (@mkasztelnik)
- Data sets view from an external server was integrated as an iframe (@dharezlak)
- Make jwt pem path configurable though system variable (@mkasztelnik)
- Externalize JWT token generation from user into separate class (@mkasztelnik)
- Make PDP URI and access method case insensitive (@mkasztelnik)
- Improve service URL form placeholder (@mkasztelnik)
- Externalize PLGrid grant id into configuration file (@mkasztelnik)
- Rename
User.with_active_computations
intoUser.with_submitted_computations
(@mkasztelnik) - Corrected SMTP config to include Auth support (@jmeizner)
- Updated PDP and Services documentation (@jmeizner)
- Update rails into 5.0.2 and other dependencies (@mkasztelnik)
- Make Computation a base class for more specialized classes (@tomek.bartynski)
- Introduced WebdavComputation and RimrockComputation that inherit from Computation class (@tomek.bartynski)
- Patient Case pipeline is now hardcoded in Patient model (@tomek.bartynski)
- Implemented classes that run Blood Flow Simulation and Heart Model Computation pipeline steps (@tomek.bartynski)
- Correct default pundit permission denied message is returned when no custom message is defined (@mkasztelnik)
- Missing toastr Javascript map file added (@mkasztelnik)
- Show add group member and group management help only to group group owner (@mkasztelnik)
- Unify cloud resources view with other views (surrounding white box added) (@mkasztelnik)
- Fix path parsing when alias service name is used in PDP request (@mkasztelnik)
- PLGrid profile view visible only for connected accounts (@mkasztelnik)
- PDP - wildcard at the beginning and end of resource path should not be default (@mkasztelnik)
- Application version and revision in layout footer (@mkasztelnik)
- Pundit authorized error messages for groups and services (@mkasztelnik)
- Notifications are using the JS toastr library for fancier popups (@dharezlak)
- The file store component uses portal's notification system to report errors (@dharezlak)
- Service owner can manage local policies through UI (@mkasztelnik)
- Unique user name composed with full name and email (@mkasztelnik)
- Embed atmosphere UI into cloud resources section (@nowakowski)
- Redirect status set to 302 instead of 404 (when record not found), 401 (when user does not have permission to perform action) to avoid ugly "You are being redirected" page (@mkasztelnik)
- PDP denies everything when user is not approved (@mkasztelnik)
- Add/remove group members redesigned (@mkasztelnik)
- Update rubocop and remove new offenses (@mkasztelnik)
- Update project dependencies (@mkasztelnik)
- Update rubocop to 0.46.0, remove new discovered offences (@mkasztelnik)
- Update to rails 5.0.1 (@mkasztelnik)
- Service factory that used to randomly produce invalid objects (@tomek.bartynski)
- Edit/destroy group buttons visible only for group owners (@mkasztelnik)
- Administration side menu item displayed only if it is not empty (@tomek.bartynski)
- Corresponding resource entities are removed when policy API called with
only a
path
param (@dharezlak)
- Basic project structure (@mkasztelnik, @dharezlak)
- Use gentelalla theme (@dharezlak, @mkasztelnik)
- Integration with PLGrid openId (@mkasztelnik)
- Accepting new users by supervisor (@dharezlak)
- Policy Decision Point (PDP) REST API (@mkasztelnik)
- JWT Devise login strategy (@mkasztelnik)
- JWT configuration (@tomek.bartynski)
- Resource and permission management (@dharezlak)
- Patient case POC (@Nuanda)
- Sentry integration (@mkasztelnik)
- Get user gravatar (@mkasztelnik)
- Store PLGrid proxy in DB while logging in using PLGrid openId (@mkasztelnik)
- JWT token expiry set to 1 hour (@tomek.bartynski)
- Help pages for REST API (@mkasztelnik)
- Custom error pages (@mkasztelnik)
- Group hierarchies performance tests (@tomek.bartynski)
- Push patient case files into PLGrid using PLGData (@Nuanda)
- Use Rimrock for PLGrid job submission (@mkasztelnik)
- Approve user account after PLGrid login (@mkasztelnik)
- Asynchronous email sending (@mkasztelnik)
- Notify supervisors after new user registered (@mkasztelnik)
- Find resources using regular expressions (@dharezlak)
- Introduce service (@mkasztelnik)
- WebDav file browser (@dharezlak)
- REST interface for local resource management (@dharezlak)
- User profile page (@mkasztelnik)
- Project description (@amber7b, @mkasztelnik, @dharezlak)
- Sent confirmation email after user account is approved (@mkasztelnik)
- Setup continuous delivery (@tomek.bartynski)
- Setup rubocop (@tomek.bartynski)
- Service ownership (@Nuanda)
- Delegate user credentials in service resource management REST API (@mkasztelnik)
- Service management UI (@Nuanda, @mkasztelnik)
- Group management UI (@mkasztelnik)
- Show service token on show view (@mkasztelnik)
- Deploy to production when tag is pushed into remote git repository (@tomek.bartynski)
- Group hierarchies management UI (@mkasztelnik)
- Add new registered user into default groups (@mkasztelnik)
- Resource management REST API documentation (@dharezlak)
- Service aliases (@jmeizner)
- Issue and merge request templates (@mkasztelnik)
- Rake task for generating sample data for development purposes (@tomek.bartynski)
- Users can set Access Methods for new and existing Services (@Nuanda)
- There are global Access Methods which work for all Services (@Nuanda)
- Bullet gem warns about database queries performance problems (@tomek.bartynski)
- Omnipotent admin (@Nuanda)
- Global resource access policies management UI (@mkasztelnik)
- Additional attribute with policy proxy URL is passed to the file store browser (@dharezlak)
- Provide help panels for resource actions (@nowakowski)
- Hint regarding resource paths in global policies tab (@tomek.bartynski)
- Support path component in service uri (@tomek.bartynski)
- Upgrade to Rails 5 (@mkasztelnik, @Nuanda)
- Left menu refactoring - not it is server side rendered (@mkasztelnik)
- Simplify login form pages using
simple_form
wrapper (@mkasztelnik) - Resource separation into
global
andlocal
(@dharezlak) - Unify UIs for all CRUD views (@mkasztelnik)
- WebDav browser JS files obtained from a dedicated CDN (@dharezlak)
- Delete service ownership when user or service is destroyed (@mkasztelnik)
- Service views refactoring - separation for global/local policies management (@mkasztelnik, @Nuanda)
- Rewrite migrations to avoid using ActiveRecord (@amber7b)
- Increase fade out time for flash messages into 10 seconds (@mkasztelnik)
- Go to new user session path after logout (@mkasztelnik)
- Got to new user session path after logout (@mkasztelnik)
- Added a spec checking for correct removal of only policies specified by the API request parameter (@dharezlak)
- File store view uses a common layout (@dharezlak)
- Service uri must not end with a slash (@tomek.bartynski)
- Resource path must start with a slash (@tomek.bartynski)
- Removed path unification in Resource model (@tomek.bartynski)
- Update to sidekiq 4.2.2 and remove unused anymore sinatra dependency (@mkasztelnik)
- Administrator is able to see all registered services (@mkasztelnik)
- Fixed path field in a form for Resource (@tomek.bartynski)
- Remove webdav specific access methods from seeds (@mkasztelnik)
- Improve service URI validation (@Nuanda)
- Fix extra spaces in markdown code blocks (@mkasztelnik)
- Disable turbolinks on WebDav browser view to make GWT work (@mkasztelnik)
- Fix group validation - at last one group owner is needed (@mkasztelnik)
- Policies do not forbid access for access methods which they do not define (@Nuanda)
- Make icheck work with turbolinks (@mkasztelnik)
- Make zero clipboard work with turbolinks (@mkasztelnik)
- Don't allow to create group without group owner (@mkasztelnik)
- Show notice information to the user after new account created that account needs to be approved by supervisor (@mkasztelnik)
- Show
new
view instead ofedit
while creating new group and validation failed (@mkasztelnik) - Remove n+1 query for service ownership in Services#index view (@Nuanda)
- Made it possible to navigate to Service#show with a click if a service had no name (@Nuanda)
- Content passed to the file store JS browser sanitized to prevent XSS attacks (@dharezlak)
- Turbolinks disabled directly on the Files link (@dharezlak)
- PDP returns 403 when
uri
oraccess_method
query params are missing (@mkasztelnik) - Fix missing translations on service list and service show views (@mkasztelnik, @Nuanda)
- Fix n+1 queries problems in service and group sections (@mkasztelnik)
- Check service policy only once on global policies view (@mkasztelnik)
- More advance validation for service
uri
overridden (@jmeizner) - Policy management API documentation corrected (@dharezlak)
- Fix duplicates and missing part of
Service#show
(@jmeizner) - Policy API uses a service reference when querying for access methods (@dharezlak)