From cea42aacdda496f2757d4acf8927bd153c8c11fb Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Tue, 24 Jan 2017 11:56:10 -0200 Subject: [PATCH] LT-55: Generating an image for each measurement --- .../measurementTableView.html | 5 ++- .../measurementTableView.js | 25 ++++++++--- .../ohif-measurements/client/lib/exportPdf.js | 43 +++++++++++++++++++ Packages/ohif-measurements/package.js | 3 +- 4 files changed, 68 insertions(+), 8 deletions(-) diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.html b/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.html index b5e990d5b..3061c85d0 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.html +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.html @@ -1,7 +1,7 @@ diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.js b/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.js index e06235aa8..3f48ba984 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.js +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableView/measurementTableView.js @@ -1,7 +1,27 @@ import { Template } from 'meteor/templating'; +import { Tracker } from 'meteor/tracker'; import { _ } from 'meteor/underscore'; import { OHIF } from 'meteor/ohif:core'; +Template.measurementTableView.onCreated(() => { + const instance = Template.instance(); + const { measurementApi, timepointApi } = instance.data; + + instance.data.measurementGroups = new ReactiveVar(); + + Tracker.autorun(() => { + measurementApi.changeObserver.depend(); + const data = OHIF.measurements.getMeasurementsGroupedByNumber(measurementApi, timepointApi); + instance.data.measurementGroups.set(data); + }); +}); + +Template.measurementTableView.events({ + 'click .js-pdf'(event, instance) { + OHIF.measurements.exportPdf(instance.data.measurementGroups.get()); + } +}); + Template.measurementTableView.helpers({ getNewMeasurementType(tool) { // TODO: Check Conformance criteria here. @@ -14,11 +34,6 @@ Template.measurementTableView.helpers({ }; }, - getMeasurementsGroupedByNumber() { - const { measurementApi, timepointApi } = Template.instance().data; - return OHIF.measurements.getMeasurementsGroupedByNumber(measurementApi, timepointApi); - }, - newMeasurements(measurementType) { const instance = Template.instance(); const measurementApi = instance.data.measurementApi; diff --git a/Packages/ohif-measurements/client/lib/exportPdf.js b/Packages/ohif-measurements/client/lib/exportPdf.js index 26bc7ad2e..ca6ce626e 100644 --- a/Packages/ohif-measurements/client/lib/exportPdf.js +++ b/Packages/ohif-measurements/client/lib/exportPdf.js @@ -6,6 +6,49 @@ import html2canvas from 'html2canvas'; window.jsPDF = jsPDF; window.html2canvas = html2canvas; +OHIF.measurements.exportPdf = measurementGroups => { + console.warn('>>>>Adding canvas to body', measurementGroups); + + const $element = $('
').css({ + border: '1px solid red', + height: 1000, + left: 0, + position: 'fixed', + top: 0, + width: 1000, + 'z-index': 100000 + }); + + $element.appendTo(document.body); + + const element = $element[0]; + + cornerstone.enable(element, { renderer: 'webgl' }); + + const measurements = { + targets: [], + nonTargets: [] + }; + measurementGroups.forEach(measurementGroup => { + const { toolGroup, measurementRows } = measurementGroup; + measurementRows.forEach(rowItem => { + rowItem.entries.forEach(entry => measurements[toolGroup.id].push(entry)); + }); + }); + + let i = 0; + measurements.targets.forEach(target => { + setTimeout(() => { + cornerstone.loadImage(target.imageId).then(image => { + cornerstone.displayImage(element, image); + }); + }, i * 1000); + i++; + }); + + setTimeout(() => $element.remove(), i * 1000); +}; + // window.exportCanvasToPdf = canvas => { // // only jpeg is supported by jsPDF // const imgData = canvas.toDataURL('image/jpeg', 1.0); diff --git a/Packages/ohif-measurements/package.js b/Packages/ohif-measurements/package.js index 122152451..7df485665 100644 --- a/Packages/ohif-measurements/package.js +++ b/Packages/ohif-measurements/package.js @@ -1,7 +1,8 @@ Npm.depends({ ajv: '4.10.4', jspdf: '1.3.2', - html2canvas: '0.5.0-beta4' + html2canvas: '0.5.0-beta4', + pdfmake: '0.1.24' }); Package.describe({