From e8d860800228020234fd7aa6f9ea8d0cad457723 Mon Sep 17 00:00:00 2001 From: Leonardo Campos Date: Wed, 8 Feb 2017 21:10:01 -0200 Subject: [PATCH] jslint --- .../StackImagePositionOffsetSynchronizer.js | 379 +++++++++--------- 1 file changed, 189 insertions(+), 190 deletions(-) diff --git a/Packages/ohif-viewerbase/client/lib/classes/StackImagePositionOffsetSynchronizer.js b/Packages/ohif-viewerbase/client/lib/classes/StackImagePositionOffsetSynchronizer.js index 0a75ece76..2ae39c574 100644 --- a/Packages/ohif-viewerbase/client/lib/classes/StackImagePositionOffsetSynchronizer.js +++ b/Packages/ohif-viewerbase/client/lib/classes/StackImagePositionOffsetSynchronizer.js @@ -4,208 +4,207 @@ import { $ } from 'meteor/jquery'; import { toolManager } from '../toolManager'; export class StackImagePositionOffsetSynchronizer { - constructor() { - this.active = false; - this.syncedViewports = []; - this.synchronizer = new cornerstoneTools.Synchronizer('CornerstoneNewImage', cornerstoneTools.stackImagePositionOffsetSynchronizer) - } - - static get ELEMENT_DISABLED_EVENT() { - return 'CornerstoneElementDisabled.StackImagePositionOffsetSynchronizer'; - } - - isActive() { - return this.active; - } - - activate() { - const viewports = this.getLinkableViewports(); - this.syncViewports(viewports); - } - - activateByViewportIndexes(viewportIndexes) { - const viewports = this.getViewportByIndexes(viewportIndexes); - this.syncViewports(viewports); - } - - deactivate() { - if(!this.isActive()) { - return; + constructor() { + this.active = false; + this.syncedViewports = []; + this.synchronizer = new cornerstoneTools.Synchronizer('CornerstoneNewImage', cornerstoneTools.stackImagePositionOffsetSynchronizer); } - while(this.syncedViewports.length) { - const viewport = this.syncedViewports[0]; - this.removeViewport(viewport); + static get ELEMENT_DISABLED_EVENT() { + return 'CornerstoneElementDisabled.StackImagePositionOffsetSynchronizer'; } - this.active = false; - toolManager.deactivateCommandButton('linkStackScroll'); - } - - update() { - if(!this.isActive()) { - return; + isActive() { + return this.active; } - const activeViewportElement = this.getActiveViewportElement(); - - if(this.isViewportSynced(activeViewportElement)) { - return; + activate() { + const viewports = this.getLinkableViewports(); + this.syncViewports(viewports); } - this.deactivate(); - this.activate(); - } - - syncViewports(viewports) { - const viewportIndexes = []; - - if(this.isActive() || (viewports.length <= 1)) { - return; + activateByViewportIndexes(viewportIndexes) { + const viewports = this.getViewportByIndexes(viewportIndexes); + this.syncViewports(viewports); } - viewports.forEach((viewport, index) => { - this.synchronizer.add(viewport.element); - this.syncedViewports.push(viewport); - viewportIndexes.push(viewport.index) - - $(viewport.element).on(StackImagePositionOffsetSynchronizer.ELEMENT_DISABLED_EVENT, this.elementDisabledHandler(this)); - }); - - this.active = true; - toolManager.activateCommandButton('linkStackScroll'); - Session.set('StackImagePositionOffsetSynchronizerLinkedViewports', viewportIndexes); - - } - - isViewportSynced(viewportElement) { - return !!this.getViewportByElement(viewportElement); - } - - getActiveViewportElement() { - const viewportIndex = Session.get('activeViewport') || 0; - return $('.imageViewerViewport').get(viewportIndex); - } - - removeViewport(viewport) { - const index = this.syncedViewports.indexOf(viewport); - - if(index === -1) { - return; - } - - this.syncedViewports.splice(index, 1); - this.synchronizer.remove(viewport.element); - this.removeLinkedViewportFromSession(viewport); - $(viewport.element).off(StackImagePositionOffsetSynchronizer.ELEMENT_DISABLED_EVENT); - } - - getViewportByElement(viewportElement) { - const length = this.syncedViewports.length; - - for(let i = 0; i < length; i++) { - const viewport = this.syncedViewports[i]; - - if(viewport.element === viewportElement) { - return viewport; - } - } - } - - removeViewportByElement(viewportElement) { - let viewport = this.getViewportByElement(viewportElement); - - if(viewport) { - this.removeViewport(viewport); - } - } - - removeLinkedViewportFromSession(viewport) { - const linkedViewports = Session.get('StackImagePositionOffsetSynchronizerLinkedViewports'); - const index = linkedViewports.indexOf(viewport.index); - - if(index !== -1) { - linkedViewports.splice(index, 1); - Session.set('StackImagePositionOffsetSynchronizerLinkedViewports', linkedViewports); - } - } - - elementDisabledHandler(context) { - return (e, eventData) => { - context.removeViewportByElement(eventData.element); - } - } - - getViewportByIndexes(viewportIndexes) { - const viewports = []; - const viewportElements = $('.imageViewerViewport'); - - viewportIndexes.forEach(index => { - const element = viewportElements.get(index); - - if(!element) { + deactivate() { + if (!this.isActive()) { return; - } - - viewports.push({ - index, - element - }); - }); - - return viewports; - } - - getLinkableViewports() { - const activeViewportElement = this.getActiveViewportElement(); - const activeViewportImageNormal = this.getViewportImageNormal(activeViewportElement); - const viewports = []; - - $('.imageViewerViewport').each((index, viewportElement) => { - const viewportImageNormal = this.getViewportImageNormal(viewportElement); - - if(activeViewportImageNormal && viewportImageNormal) { - const angleInRadians = viewportImageNormal.angleTo(activeViewportImageNormal); - - // Pi / 12 radians = 15 degrees - // If the angle between two vectors is Pi, it means they are just inverted - if (angleInRadians < Math.PI / 12 || angleInRadians === Math.PI) { - viewports.push({ - index: index, - element: viewportElement - }); - } - } - }); - - return viewports; - } - - getViewportImageNormal(element) { - if(!element) { - return; - } - - element = $(element).get(0); - - try { - const enabledElement = cornerstone.getEnabledElement(element); - - if(!enabledElement.image) { - return; } - const imageId = enabledElement.image.imageId; - const imagePlane = cornerstoneTools.metaData.get('imagePlane', imageId); - - if(!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) { - return; + while (this.syncedViewports.length) { + const viewport = this.syncedViewports[0]; + this.removeViewport(viewport); } - return imagePlane.rowCosines.clone().cross(imagePlane.columnCosines); - } catch(error) { - const errorMessage = error.message || error; - OHIF.log.info(`StackImagePositionOffsetSynchronizer getViewportImageNormal: ${errorMessage}`); - } - } -}; \ No newline at end of file + this.active = false; + toolManager.deactivateCommandButton('linkStackScroll'); + } + + update() { + if (!this.isActive()) { + return; + } + + const activeViewportElement = this.getActiveViewportElement(); + + if (this.isViewportSynced(activeViewportElement)) { + return; + } + + this.deactivate(); + this.activate(); + } + + syncViewports(viewports) { + const viewportIndexes = []; + + if (this.isActive() || (viewports.length <= 1)) { + return; + } + + viewports.forEach((viewport, index) => { + this.synchronizer.add(viewport.element); + this.syncedViewports.push(viewport); + viewportIndexes.push(viewport.index); + + $(viewport.element).on(StackImagePositionOffsetSynchronizer.ELEMENT_DISABLED_EVENT, this.elementDisabledHandler(this)); + }); + + this.active = true; + toolManager.activateCommandButton('linkStackScroll'); + Session.set('StackImagePositionOffsetSynchronizerLinkedViewports', viewportIndexes); + } + + isViewportSynced(viewportElement) { + return !!this.getViewportByElement(viewportElement); + } + + getActiveViewportElement() { + const viewportIndex = Session.get('activeViewport') || 0; + return $('.imageViewerViewport').get(viewportIndex); + } + + removeViewport(viewport) { + const index = this.syncedViewports.indexOf(viewport); + + if (index === -1) { + return; + } + + this.syncedViewports.splice(index, 1); + this.synchronizer.remove(viewport.element); + this.removeLinkedViewportFromSession(viewport); + $(viewport.element).off(StackImagePositionOffsetSynchronizer.ELEMENT_DISABLED_EVENT); + } + + getViewportByElement(viewportElement) { + const length = this.syncedViewports.length; + + for (let i = 0; i < length; i++) { + const viewport = this.syncedViewports[i]; + + if (viewport.element === viewportElement) { + return viewport; + } + } + } + + removeViewportByElement(viewportElement) { + let viewport = this.getViewportByElement(viewportElement); + + if (viewport) { + this.removeViewport(viewport); + } + } + + removeLinkedViewportFromSession(viewport) { + const linkedViewports = Session.get('StackImagePositionOffsetSynchronizerLinkedViewports'); + const index = linkedViewports.indexOf(viewport.index); + + if (index !== -1) { + linkedViewports.splice(index, 1); + Session.set('StackImagePositionOffsetSynchronizerLinkedViewports', linkedViewports); + } + } + + elementDisabledHandler(context) { + return (e, eventData) => { + context.removeViewportByElement(eventData.element); + }; + } + + getViewportByIndexes(viewportIndexes) { + const viewports = []; + const $viewportElements = $('.imageViewerViewport'); + + viewportIndexes.forEach(index => { + const element = $viewportElements.get(index); + + if (!element) { + return; + } + + viewports.push({ + index, + element + }); + }); + + return viewports; + } + + getLinkableViewports() { + const activeViewportElement = this.getActiveViewportElement(); + const activeViewportImageNormal = this.getViewportImageNormal(activeViewportElement); + const viewports = []; + + $('.imageViewerViewport').each((index, viewportElement) => { + const viewportImageNormal = this.getViewportImageNormal(viewportElement); + + if (activeViewportImageNormal && viewportImageNormal) { + const angleInRadians = viewportImageNormal.angleTo(activeViewportImageNormal); + + // Pi / 12 radians = 15 degrees + // If the angle between two vectors is Pi, it means they are just inverted + if (angleInRadians < Math.PI / 12 || angleInRadians === Math.PI) { + viewports.push({ + index: index, + element: viewportElement + }); + } + } + }); + + return viewports; + } + + getViewportImageNormal(element) { + if (!element) { + return; + } + + element = $(element).get(0); + + try { + const enabledElement = cornerstone.getEnabledElement(element); + + if (!enabledElement.image) { + return; + } + + const imageId = enabledElement.image.imageId; + const imagePlane = cornerstoneTools.metaData.get('imagePlane', imageId); + + if (!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) { + return; + } + + return imagePlane.rowCosines.clone().cross(imagePlane.columnCosines); + } catch(error) { + const errorMessage = error.message || error; + OHIF.log.info(`StackImagePositionOffsetSynchronizer getViewportImageNormal: ${errorMessage}`); + } + } +};