ohif-viewer/platform/viewer
Joe Boccanfuso 5670a4d8d1
feat(PanelService): Left or right side panel to auto start as closed but auto open when needed (#3212)
* feat(SidePanel)
OHIF issue #3135
- Added a method to set a callback for a Panel to invoke when it is ready
to be shown (e.g. its data is loaded).
- Implemented such methods for both the segmentation and measurement panels.
- The SidePanel component now adds a callback to Panel components so that
it will automatically open a Panel that was initially closed and yet to
be opened.
- Updated the OHIF documentation accordingly.

* PR feedback
- added a PanelService that centralized much of the logic that existed in panel PanelModule
- the SidePanel subscribes to PanelService.EVENTS.ACTIVATE_PANEL for each of its child panels

* Removed the PanelMeasurementTableTracking setMeasurementPanelContentReadyCallback method.

* Made the forceActive flag in the PanelService optional and defaulted it to false.

* Fixed failing top level exports unit test.

* - PanelService subscriptions are now per panel (id) so subscribers do not
necessarily need to check the panel id in the event when it is fired
- PanelService activate panel trigger subscriptions are now returned
so that they can be (better) managed outside of the service
- updated/created the various documentation for panels and PanelService

* Clarified various documentation.
Moved the code to add the activate panel triggers out of the extensions
and into the longitudinal mode.

* Removed the openWhenPanelActivated flag.
PanelService now conforms to extending PubSubService like the other services.
Updated various documentation.

* Fixed failing e2e, mpr test.

* Renamed the ActivatePanelTriggers type properties.
The ExtensionManager now sets the id of various modules as a property on each of those modules.
2023-03-09 22:30:09 -05:00
..
.recipes feat: Add DICOM SEG support and MPR, referenceLines and StackSync and more (#3015) 2022-11-16 14:19:52 -05:00
.webpack feat: add more e2e tests for MPR and add test mode and extension (#3180) 2023-02-17 15:04:07 -05:00
assets Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
cypress feat(PanelService): Left or right side panel to auto start as closed but auto open when needed (#3212) 2023-03-09 22:30:09 -05:00
public feat: add more e2e tests for MPR and add test mode and extension (#3180) 2023-02-17 15:04:07 -05:00
src feat(PanelService): Left or right side panel to auto start as closed but auto open when needed (#3212) 2023-03-09 22:30:09 -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 feat: New @ohif/viewer project structure + routes (#1674) 2020-05-15 12:57:23 +01:00
.env.example feat: New @ohif/viewer project structure + routes (#1674) 2020-05-15 12:57:23 +01: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] 2020-05-14 14:24:17 +00:00
cypress.config.ts feat: add more e2e tests for MPR and add test mode and extension (#3180) 2023-02-17 15:04:07 -05: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
netlify.toml feat(tmtv): add ct ranges for thresholding (#3225) 2023-03-07 22:47:16 -05:00
package.json feat(SR): Measurement adapter mappings and save to same series (#3140) 2023-02-17 16:44:21 -05:00
pluginConfig.json feat: DicomTagBrowser tool (#2975) 2022-11-16 22:16:12 -05:00
postcss.config.js Chore/kill yalc with fire (#629) 2019-08-13 15:36:46 -04:00
preinstall.js feat: cornerstone3D stack and volume viewports (#2787) 2022-07-27 12:39:04 -04:00
README.md Docs reorganization 2021-07-15 09:54:01 +02:00
tailwind.config.js feat(ViewportActionBar and CinePlayer): Add new design for action bar and cine player (#3204) 2023-02-28 15:57:19 -05:00
tailwind.css fix(tailwind): Ensure tailwind properly purges unused utility classes (#2485) 2021-07-26 13:22:25 +02: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