diff --git a/Packages/ohif-core/client/lib/viewer.js b/Packages/ohif-core/client/lib/viewer.js index 059d57c1a..2edf78daf 100644 --- a/Packages/ohif-core/client/lib/viewer.js +++ b/Packages/ohif-core/client/lib/viewer.js @@ -2,11 +2,8 @@ import { OHIF } from 'meteor/ohif:core'; OHIF.viewer = {}; -// Move display sets forward or backward in the selected viewport -OHIF.viewer.moveDisplaySet = isNext => { - // Get the selected viewport index - const viewportIndex = Session.get('activeViewport'); - +// Move display sets forward or backward in the given viewport index +OHIF.viewer.moveSingleViewportDisplaySets = (viewportIndex, isNext) => { // Get the selected viewport data const viewportData = window.layoutManager.viewportData[viewportIndex]; @@ -28,11 +25,21 @@ OHIF.viewer.moveDisplaySet = isNext => { if (isNext) { newIndex++; if (newIndex >= displaySets.length) { + // Stop here if looping is now allowing + if (!OHIF.uiSettings.displaySetNavigationLoopOverSeries) { + return; + } + newIndex = 0; } } else { newIndex--; if (newIndex < 0) { + // Stop here if looping is now allowing + if (!OHIF.uiSettings.displaySetNavigationLoopOverSeries) { + return; + } + newIndex = displaySets.length - 1; } } @@ -43,3 +50,23 @@ OHIF.viewer.moveDisplaySet = isNext => { // Rerender the viewport using the new display set data window.layoutManager.rerenderViewportWithNewDisplaySet(viewportIndex, newDisplaySetData); }; + +// Move multiple display sets forward or backward in all viewports +OHIF.viewer.moveMultipleViewportDisplaySets = isNext => { + // TODO: implement +}; + +// Move display sets forward or backward +OHIF.viewer.moveDisplaySets = isNext => { + //Check if navigation is on a single or multiple viewports + if (OHIF.uiSettings.displaySetNavigationMultipleViewports) { + // Move display sets on multiple viewports + OHIF.viewer.moveMultipleViewportDisplaySets(isNext); + } else { + // Get the selected viewport index + const viewportIndex = Session.get('activeViewport'); + + // Move display sets on a single viewport + OHIF.viewer.moveSingleViewportDisplaySets(viewportIndex, isNext); + } +}; diff --git a/Packages/viewerbase/client/components/viewer/displaySetNavigation/displaySetNavigation.html b/Packages/viewerbase/client/components/viewer/displaySetNavigation/displaySetNavigation.html index bc6ed243a..67880565c 100644 --- a/Packages/viewerbase/client/components/viewer/displaySetNavigation/displaySetNavigation.html +++ b/Packages/viewerbase/client/components/viewer/displaySetNavigation/displaySetNavigation.html @@ -9,7 +9,7 @@ {{/if}} -
diff --git a/Packages/viewerbase/client/components/viewer/displaySetNavigation/displaySetNavigation.js b/Packages/viewerbase/client/components/viewer/displaySetNavigation/displaySetNavigation.js index 65ca85618..505847af6 100644 --- a/Packages/viewerbase/client/components/viewer/displaySetNavigation/displaySetNavigation.js +++ b/Packages/viewerbase/client/components/viewer/displaySetNavigation/displaySetNavigation.js @@ -3,10 +3,16 @@ import { Template } from 'meteor/templating'; Template.displaySetNavigation.events({ 'click .js-next'(event, instance) { - OHIF.viewer.moveDisplaySet(true); + OHIF.viewer.moveDisplaySets(true); }, 'click .js-prev'(event, instance) { - OHIF.viewer.moveDisplaySet(false); + OHIF.viewer.moveDisplaySets(false); + } +}); + +Template.displaySetNavigation.helpers({ + disableButton(isPrevious) { + } }); diff --git a/Packages/worklist/both/schema.js b/Packages/worklist/both/schema.js index a5ac2d87f..a854a6a3a 100644 --- a/Packages/worklist/both/schema.js +++ b/Packages/worklist/both/schema.js @@ -121,6 +121,16 @@ export const UISettings = new SimpleSchema({ type: Boolean, label: 'Left sidebar open by default?', defaultValue: false + }, + displaySetNavigationLoopOverSeries: { + type: Boolean, + label: 'The UP/DOWN display set navigation buttons will start over when reach the last display set in viewport?', + defaultValue: true + }, + displaySetNavigationMultipleViewports: { + type: Boolean, + label: 'The UP/DOWN display set navigation buttons will iterate over all the viewports at once?', + defaultValue: false } }); diff --git a/config/orthancDICOMWeb.json b/config/orthancDICOMWeb.json index 74be118d2..367c03522 100644 --- a/config/orthancDICOMWeb.json +++ b/config/orthancDICOMWeb.json @@ -23,7 +23,9 @@ "verifyEmail": false, "ui": { "studyListFunctionsEnabled": true, - "leftSidebarOpen": true + "leftSidebarOpen": true, + "displaySetNavigationLoopOverSeries": false, + "displaySetNavigationMultipleViewports": true } } }