UNPKG

@cleerlycode/cornerstone-wado-image-loader

Version:
444 lines (443 loc) 15 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for src/imageLoader/wadouri/loadImage.js</title> <meta charset="utf-8" /> <link rel="stylesheet" href="../../../prettify.css" /> <link rel="stylesheet" href="../../../base.css" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <style type='text/css'> .coverage-summary .sorter { background-image: url(../../../sort-arrow-sprite.png); } </style> </head> <body> <div class='wrapper'> <div class='pad1'> <h1> <a href="../../../index.html">all files</a> / <a href="index.html">src/imageLoader/wadouri/</a> loadImage.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">51.92% </span> <span class="quiet">Statements</span> <span class='fraction'>27/52</span> </div> <div class='fl pad1y space-right2'> <span class="strong">42.86% </span> <span class="quiet">Branches</span> <span class='fraction'>6/14</span> </div> <div class='fl pad1y space-right2'> <span class="strong">61.54% </span> <span class="quiet">Functions</span> <span class='fraction'>8/13</span> </div> <div class='fl pad1y space-right2'> <span class="strong">51.92% </span> <span class="quiet">Lines</span> <span class='fraction'>27/52</span> </div> </div> </div> <div class='status-line medium'></div> <pre><table class="coverage"> <tr><td class="line-count quiet">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import createImage from '../createImage.js'; import parseImageId from './parseImageId.js'; import dataSetCacheManager from './dataSetCacheManager.js'; import loadFileRequest from './loadFileRequest.js'; import getPixelData from './getPixelData.js'; import { xhrRequest } from '../internal/index.js'; &nbsp; // add a decache callback function to clear out our dataSetCacheManager function addDecache (imageLoadObject, imageId) { imageLoadObject.decache = function () <span class="fstat-no" title="function not covered" >{</span> // console.log('decache'); const parsedImageId = <span class="cstat-no" title="statement not covered" >parseImageId(imageId);</span> &nbsp; <span class="cstat-no" title="statement not covered" > dataSetCacheManager.unload(parsedImageId.url);</span> }; } &nbsp; function loadImageFromPromise (dataSetPromise, imageId, frame = 0, sharedCacheKey, options, callbacks) { const start = new Date().getTime(); const imageLoadObject = { cancelFn: undefined }; &nbsp; imageLoadObject.promise = new Promise((resolve, reject) =&gt; { dataSetPromise.then((dataSet/* , xhr*/) =&gt; { const pixelData = getPixelData(dataSet, frame); const transferSyntax = dataSet.string('x00020010'); const loadEnd = new Date().getTime(); const imagePromise = createImage(imageId, pixelData, transferSyntax, options); &nbsp; addDecache(imageLoadObject, imageId); &nbsp; imagePromise.then((image) =&gt; { image.data = dataSet; image.sharedCacheKey = sharedCacheKey; const end = new Date().getTime(); &nbsp; image.loadTimeInMS = loadEnd - start; image.totalTimeInMS = end - start; <span class="missing-if-branch" title="if path not taken" >I</span>if (callbacks !== undefined &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >callbacks.imageDoneCallback !== undefined)</span> { <span class="cstat-no" title="statement not covered" > callbacks.imageDoneCallback(image);</span> } resolve(image); }, function (error) { // Reject the error, and the dataSet reject({ error, dataSet }); }); }, function (error) <span class="fstat-no" title="function not covered" >{</span> // Reject the error <span class="cstat-no" title="statement not covered" > reject({</span> error }); }); }); &nbsp; return imageLoadObject; } &nbsp; function loadImageFromDataSet (dataSet, imageId, frame = 0, sharedCacheKey, options) <span class="fstat-no" title="function not covered" >{</span> const start = <span class="cstat-no" title="statement not covered" >new Date().getTime();</span> &nbsp; const promise = <span class="cstat-no" title="statement not covered" >new Promise((resolve, reject) =&gt; <span class="fstat-no" title="function not covered" >{</span></span> const loadEnd = <span class="cstat-no" title="statement not covered" >new Date().getTime();</span> let imagePromise; &nbsp; <span class="cstat-no" title="statement not covered" > try {</span> const pixelData = <span class="cstat-no" title="statement not covered" >getPixelData(dataSet, frame);</span> const transferSyntax = <span class="cstat-no" title="statement not covered" >dataSet.string('x00020010');</span> &nbsp; <span class="cstat-no" title="statement not covered" > imagePromise = createImage(imageId, pixelData, transferSyntax, options);</span> } catch (error) { // Reject the error, and the dataSet <span class="cstat-no" title="statement not covered" > reject({</span> error, dataSet }); &nbsp; <span class="cstat-no" title="statement not covered" > return;</span> } &nbsp; <span class="cstat-no" title="statement not covered" > imagePromise.then((image) =&gt; <span class="fstat-no" title="function not covered" >{</span></span> <span class="cstat-no" title="statement not covered" > image.data = dataSet;</span> <span class="cstat-no" title="statement not covered" > image.sharedCacheKey = sharedCacheKey;</span> const end = <span class="cstat-no" title="statement not covered" >new Date().getTime();</span> &nbsp; <span class="cstat-no" title="statement not covered" > image.loadTimeInMS = loadEnd - start;</span> <span class="cstat-no" title="statement not covered" > image.totalTimeInMS = end - start;</span> <span class="cstat-no" title="statement not covered" > resolve(image);</span> }, reject); }); &nbsp; <span class="cstat-no" title="statement not covered" > return {</span> promise, cancelFn: undefined }; } &nbsp; function getLoaderForScheme (scheme) { <span class="missing-if-branch" title="else path not taken" >E</span>if (scheme === 'dicomweb' || <span class="branch-1 cbranch-no" title="branch not covered" >scheme === 'wadouri')</span> { return xhrRequest; } else <span class="cstat-no" title="statement not covered" >if (scheme === 'dicomfile') {</span> <span class="cstat-no" title="statement not covered" > return loadFileRequest;</span> } } &nbsp; function loadImage (imageId, options) { const parsedImageId = parseImageId(imageId); const loader = getLoaderForScheme(parsedImageId.scheme); &nbsp; // if the dataset for this url is already loaded, use it <span class="missing-if-branch" title="if path not taken" >I</span>if (dataSetCacheManager.isLoaded(parsedImageId.url)) { const dataSet = <span class="cstat-no" title="statement not covered" >dataSetCacheManager.get(parsedImageId.url, loader, imageId);</span> &nbsp; <span class="cstat-no" title="statement not covered" > return loadImageFromDataSet(dataSet, imageId, parsedImageId.frame, parsedImageId.url, options);</span> } &nbsp; // load the dataSet via the dataSetCacheManager const dataSetPromise = dataSetCacheManager.load(parsedImageId.url, loader, imageId); &nbsp; return loadImageFromPromise(dataSetPromise, imageId, parsedImageId.frame, parsedImageId.url, options); } &nbsp; export { loadImageFromPromise, getLoaderForScheme, loadImage }; &nbsp;</pre></td></tr> </table></pre> <div class='push'></div><!-- for sticky footer --> </div><!-- /wrapper --> <div class='footer quiet pad2 space-top1 center small'> Code coverage generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Apr 01 2018 20:02:13 GMT+0800 (CST) </div> </div> <script src="../../../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../../../sorter.js"></script> </body> </html>