ohif-viewer/extensions/vtk/src/utils/setMPRLayout.js
James Petts d5e21bb5bb
* chore: 🤖 Update react-vtkjs-viewport and refactor vtk extension
* chore: 🤖 Update react-vtkjs-viewport and refactor vtk extension
2019-10-18 14:53:43 +01:00

58 lines
1.3 KiB
JavaScript

import setLayoutAndViewportData from './setLayoutAndViewportData.js';
export default function setMPRLayout(
displaySet,
viewportPropsArray,
numRows = 1,
numColumns = 1
) {
return new Promise((resolve, reject) => {
const viewports = [];
const numViewports = numRows * numColumns;
if (viewportPropsArray && viewportPropsArray.length !== numViewports) {
reject(
new Error(
'viewportProps is supplied but its length is not equal to numViewports'
)
);
}
const viewportSpecificData = {};
for (let i = 0; i < numViewports; i++) {
viewports.push({});
viewportSpecificData[i] = displaySet;
viewportSpecificData[i].plugin = 'vtk';
}
const apis = [];
viewports.forEach((viewport, index) => {
apis[index] = null;
const viewportProps = viewportPropsArray[index];
viewports[index] = Object.assign({}, viewports[index], {
vtk: {
mode: 'mpr', // TODO: not used
afterCreation: api => {
apis[index] = api;
if (apis.every(a => !!a)) {
resolve(apis);
}
},
...viewportProps,
},
});
});
setLayoutAndViewportData(
{
numRows,
numColumns,
viewports,
},
viewportSpecificData
);
});
}