ohif-viewer/platform/viewer
Rodrigo Antinarelli 1df21a9e07 fix: User Preferences Issues (#1207)
* fix: study list translations

* Don't render until translations are ready

* Try to wait for translations to load

* Use null to render "nothing"

* Try toggling useSuspense off up a layer

* logging

* Remove useSuspense false flags

* DO NOT OPEN A PR WITH IT.
Experimental changes only.
Try to solve issues with useTranslation hooks
 #Please enter the commit message for your changes. Lines starting

* Remove unecessary changes

* feat: 🎸 useMedia hook to not use one more prop for upd state vl

* docs: Add license scan report and status (#1161)

Signed-off-by: fossabot <badges@fossa.io>

* fix: 🐛 Fix for JS breaking on header (#1164)

* feat: 🎸 Code review and refact

Revised code based on PRs(variable alias,...). Changed hook for
useMedia. Now, it provides two hooks: one to get displayMediaSize and
other to get Entity(component, objects...) based on displayMediaSize.
Implemented a similar solution for state manager to store
mediaQueryList(s) and displaySize for app.

* feat: 🎸 Fine tunning on mediaQuery value, fixed issue about it

* fix: 🐛 Fixed issue and refactoring

Fixed js exception and also refactoring userPreferences components to
functional component

* fix: 🐛 Code review. Localstorage fix minor bugs

* fix: 🐛 Ensure hotkey lower case always

* fix: translation switcher

* chore(release): publish [skip ci]

 - @ohif/extension-vtk@0.53.6
 - @ohif/ui@0.62.1
 - @ohif/viewer@2.8.2

* Add new modal service

* Change serviceManager prop to servicesManager

* CR Update: fix casing and add required proptypes to providers

* CR Update: Improve ohifmodal proptypes

* CR Update: Fix typo in extensionmanager

* CR Update: add default props to service and check service in provider

* Refactor modal provider to better use its own state

* ci: don't build our master branch (#1177)

* ci: don't build our master branch

* Add netlify-cli as a dev dependency

* ci: trying a sheltered merge flow for promotions

* Use modal instead of modal context

* Ci/promotable builds (#1179)

* ci: don't build our master branch

* Add netlify-cli as a dev dependency

* ci: trying a sheltered merge flow for promotions

* ci: try building with QUICK_BUILD flag

* Change modal children order

* Ci/promotable builds (#1180)

* ci: don't build our master branch

* Add netlify-cli as a dev dependency

* ci: trying a sheltered merge flow for promotions

* ci: try building with QUICK_BUILD flag

* Try using ~/repo prefix in command

* Ci/promotable builds (#1181)

* ci: don't build our master branch

* Add netlify-cli as a dev dependency

* ci: trying a sheltered merge flow for promotions

* ci: try building with QUICK_BUILD flag

* Try using ~/repo prefix in command

* ci: make sure netlify command is available

* Ci/promotable builds (#1182)

* ci: don't build our master branch

* Add netlify-cli as a dev dependency

* ci: trying a sheltered merge flow for promotions

* ci: try building with QUICK_BUILD flag

* Try using ~/repo prefix in command

* ci: make sure netlify command is available

* ci: use sudo for global command

* Fix OHIFModal proptypes

* Ci/promotable builds (#1183)

* ci: don't build our master branch

* Add netlify-cli as a dev dependency

* ci: trying a sheltered merge flow for promotions

* ci: try building with QUICK_BUILD flag

* Try using ~/repo prefix in command

* ci: make sure netlify command is available

* ci: use sudo for global command

* Inline personal access token w/ env var

* Ci/promotable builds (#1184)

* ci: don't build our master branch

* Add netlify-cli as a dev dependency

* ci: trying a sheltered merge flow for promotions

* ci: try building with QUICK_BUILD flag

* Try using ~/repo prefix in command

* ci: make sure netlify command is available

* ci: use sudo for global command

* Inline personal access token w/ env var

* ci: workaround for sudo limitations

* ci: restore release workflow (#1185)

* ci: don't build our master branch

* Add netlify-cli as a dev dependency

* ci: trying a sheltered merge flow for promotions

* ci: try building with QUICK_BUILD flag

* Try using ~/repo prefix in command

* ci: make sure netlify command is available

* ci: use sudo for global command

* Inline personal access token w/ env var

* ci: workaround for sudo limitations

* ci: restore release workflow

* Pass services to each module, improve tests

* Add servicesManager test and registerServices method

* Fix key warning of snackbar elements

* Remove netlify-cli; we';ll install this on CI server

* Update staging and prod netlify site IDs

* Clean up NPM_PUBLISH step

* Clean up DOCS_PUBLISH step

* Clean up Deploy workflow

* Custom executor to override cypress config

* Spacing

* Use an existing docker hub image

* Switch to npx instead of digging into npm bin location

* Remove e2e test before prod deploy

* Add workflow images

* docs: continous integrationn

* Add default props to modal

* chore(release): publish [skip ci]

 - @ohif/extension-cornerstone@1.5.1
 - @ohif/extension-vtk@0.53.7
 - @ohif/core@1.9.1
 - @ohif/ui@0.62.2
 - @ohif/viewer@2.8.3

* chore(release): publish [skip ci]

 - @ohif/extension-vtk@0.53.8
 - @ohif/core@1.10.0
 - @ohif/ui@0.62.3
 - @ohif/viewer@2.8.4

* ci: Redirect site traffic to index.html if file is not resolved

* ci: fix typo

* fix: 🐛 Code review. Remove 'global state' for displaySize

* fix: 🐛 Code review. Ref back to useMedia and pass value down

Code review. Ref back to useMedia and pass value down (components)
instead of creating a specialized hook to tied any component on it

* fix: translation switcher

* fix

* cleanup

* add missed translation

* fix: 🐛 Code review

* fix: 🐛 Fix unit tests

* fix: 🐛 Fix unit test

* fix: 🐛 Code merge solve conflicts. Missing files changes

* Merge from master. Missing files changes

* feat: 🎸 Code review. Fix issues with DatePicker

Fixed at least the minimum issue with datePicker and update some content
on every translation changed

* fix: 🐛 Code review. Style fix on modal

* fixes in general preferences after merge

* fix

* export default i18n language

* translation fixes

* increase snackbar zindex

* initialize language

* WIP propagate props<>state fixes

* fix state propagation

* remove hotkey error when reset default

* fix datePicker

* i18n updates

* fix i18n strings

* fix reset default -- set right input value

* fix default language

* fix e2e for user preferences

* small fix datePicker props

* remove i18n from window -- debugging purposes only

* lint fixes
2019-11-28 00:48:27 -05:00
..
.recipes docs(data-source): new file locations, react-scripts to webpack, new env variables for proxy 2019-09-05 08:45:11 -04:00
.webpack feat: service worker (#1045) 2019-10-29 14:51:40 -04:00
assets Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
cypress fix: User Preferences Issues (#1207) 2019-11-28 00:48:27 -05:00
public feat: Issue 879 viewer route query param not filtering but promoting (#1141) 2019-11-19 03:33:48 -05:00
src fix: User Preferences Issues (#1207) 2019-11-28 00:48:27 -05:00
.all-contributorsrc Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
.browserslistrc fix: measurementsAPI issue caused by production build (#842) 2019-09-04 13:53:13 -04:00
.dockerignore Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
.env Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
.env.example ci: set NODE_ENV, fix out of memory issue, fix hot reload bundling 2019-08-29 08:53:33 -04:00
.eslintignore Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
babel.config.js Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
CHANGELOG.md chore(release): publish [skip ci] 2019-11-27 21:04:00 +00:00
cypress.json test: Adding Percy Snapshot on VTK, PDF and Microscopy tests (#1059) 2019-10-21 14:30:50 -04:00
jest.config.js Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
jestBabelTransform.js Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
LICENSE Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
package.json chore(release): publish [skip ci] 2019-11-27 21:04:00 +00:00
postcss.config.js Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
README.md chore: update references to ohif-core and react-viewerbase 2019-09-05 21:52:45 -04:00
server.js fix: measurementsAPI issue caused by production build (#842) 2019-09-04 13:53:13 -04:00

@ohif/viewer

@ohif/viewer is a zero-footprint medical image viewer provided by the Open Health Imaging Foundation (OHIF). It is a configurable and extensible progressive web application with out-of-the-box support for image archives which support DICOMweb.


NPM version NPM downloads Pulls All Contributors MIT License

ATTENTION: If you are looking for Version 1 (the Meteor Version) of this repository, it lives on the v1.x branch

Why?

Building a web based medical imaging viewer from scratch is time intensive, hard to get right, and expensive. Instead of re-inventing the wheel, you can use the OHIF Viewer as a rock solid platform to build on top of. The Viewer is a React Progressive Web Application that can be embedded in existing applications via it's packaged source (ohif-viewer) or hosted stand-alone. The Viewer exposes configuration and extensions to support workflow customization and advanced functionality at common integration points.

If you're interested in using the OHIF Viewer, but you're not sure it supports your use case check out our docs. Still not sure, or you would like to propose new features? Don't hesitate to create an issue or open a pull request.

Getting Started

This readme is specific to testing and developing locally. If you're more interested in production deployment strategies, you can check out our documentation on publishing.

Want to play around before you dig in? Check out our LIVE Demo

Setup

Requirements:

Steps:

  1. Fork this repository
  2. Clone your forked repository (your origin)
  • git clone git@github.com:YOUR_GITHUB_USERNAME/Viewers.git
  1. Add OHIF/Viewers as a remote repository (the upstream)
  • git remote add upstream git@github.com:OHIF/Viewers.git

Developing Locally

In your cloned repository's root folder, run:

// Restore dependencies
yarn install

// Stands up local server to host Viewer.
// Viewer connects to our public cloud PACS by default
yarn start

For more advanced local development scenarios, like using your own locally hosted PACS and test data, check out our Essential: Getting Started guide.

E2E Tests

Using Cypress to create End-to-End tests and check whether the application flow is performing correctly, ensuring that the integrated components are working as expected.

Why Cypress?

Cypress is a next generation front end testing tool built for the modern web. With Cypress is easy to set up, write, run and debug tests

It allow us to write different types of tests:

  • End-to-End tests
  • Integration tests
  • Unit tets

All tests must be in ./cypress/integration folder.

Commands to run the tests:

// Open Cypress Dashboard that provides insight into what happened when your tests ran
yarn run cy

// Run all tests using Electron browser headless
yarn run cy:run

// Run all tests in CI mode
yarn run cy:run:ci

Contributing

Large portions of the Viewer's functionality are maintained in other repositories. To get a better understanding of the Viewer's architecture and "where things live", read our docs on the Viewer's architecture

It is notoriously difficult to setup multiple dependent repositories for end-to-end testing and development. That's why we recommend writing and running unit tests when adding and modifying features. This allows us to program in isolation without a complex setup, and has the added benefit of producing well-tested business logic.

  1. Clone this repository
  2. Navigate to the project directory, and yarn install
  3. To begin making changes, yarn run dev
  4. To commit changes, run yarn run cm

When creating tests, place the test file "next to" the file you're testing. For example:

// File
index.js;

// Test for file
index.test.js;

As you add and modify code, jest will watch for uncommitted changes and run your tests, reporting the results to your terminal. Make a pull request with your changes to master, and a core team member will review your work. If you have any questions, please don't hesitate to reach out via a GitHub issue.

Contributors

Thanks goes to these wonderful people (emoji key):

Erik Ziegler
Erik Ziegler

💻 🚇
Evren Ozkan
Evren Ozkan

💻
Gustavo André Lelis
Gustavo André Lelis

💻
Danny Brown
Danny Brown

💻 🚇
allcontributors[bot]
allcontributors[bot]

📖
Esref Durna
Esref Durna

💬
diego0020
diego0020

💻
David Wire
David Wire

💻
João Felipe de Medeiros Moreira
João Felipe de Medeiros Moreira

⚠️

This project follows the all-contributors specification. Contributions of any kind welcome!

License

MIT © OHIF