add multiple images

This commit is contained in:
ilia 2022-10-31 13:33:51 +03:00
parent 73d12f3e62
commit 11a5de61be

159
index.js
View File

@ -4,6 +4,7 @@ var app = new dwv.App();
var circleFactory = new dwv.tool.draw.CircleFactory(); var circleFactory = new dwv.tool.draw.CircleFactory();
var roiFactory = new dwv.tool.draw.RoiFactory(); var roiFactory = new dwv.tool.draw.RoiFactory();
schema = []
var tools = { var tools = {
@ -29,6 +30,18 @@ app.addEventListener('load', function () {
app.setDrawShape('Circle') app.setDrawShape('Circle')
}); });
function loadSchema(schema) {
console.log(schema, schema.length)
urls = []
picSchema = new Map()
for (var i = 0; i < schema.length; ++i) {
console.log(i)
picSchema.set(schema[i].url, schema[i].figures)
urls.push(schema[i].url)
}
return [urls, picSchema]
}
function createCircle(circleData) { function createCircle(circleData) {
var point1 = new dwv.math.Point2D(circleData.center.x, circleData.center.y) var point1 = new dwv.math.Point2D(circleData.center.x, circleData.center.y)
@ -53,6 +66,7 @@ function createCircle(circleData) {
}) })
//drawCommand = new dwv.tool.DrawGroupCommand(draw, 'circle-group', app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer()['.position-group'][0], false) //drawCommand = new dwv.tool.DrawGroupCommand(draw, 'circle-group', app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer()['.position-group'][0], false)
posGroup = app.getActiveLayerGroup().getActiveDrawLayer().getDrawController().getCurrentPosGroup() posGroup = app.getActiveLayerGroup().getActiveDrawLayer().getDrawController().getCurrentPosGroup()
console.log(app.getActiveLayerGroup().getActiveDrawLayer().getDrawController())
posGroup.add(draw) posGroup.add(draw)
app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer().listening(true) app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer().listening(true)
//drawCommand.execute() //drawCommand.execute()
@ -100,65 +114,59 @@ function createDraws(drawsData) {
function postCircles() { function postCircles() {
circlesAttrs = app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer().getChildren().filter(e => e.attrs.name == 'circle-group').map( setTimeout(() => {
(e) => { console.log(app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer().children[0].children)
console.log(e, "eeeeee") }, 100)
return e.children.filter( // circlesAttrs = app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer().getChildren().filter(e => e.attrs.name == 'circle-group').map(
(ee) => { // (e) => {
console.log(e) // //console.log(e)
return ee.attrs.name == 'shape' // return e.children.filter(
} // (ee) => {
).map(e => e.attrs) // return ee.attrs.name == 'shape'
} // }
) // ).map(eee => {return {attrs: eee.attrs, parent: e.attrs}})
// }
// )
circlesAttrs = []
circlesAttrs = circlesAttrs.concat(app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer().children[0].children.filter(e => e.attrs.name == 'circle-group').map((e) => { circlesAttrs = circlesAttrs.concat(app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer().children[0].children.filter(e => e.attrs.name == 'circle-group').map((e) => {
return e.children.filter((e) => e.attrs.name == 'shape').map(e => e.attrs) return e.children.filter((eee) => eee.attrs.name == 'shape').map(ee => {return {attrs: ee.attrs, parent: e.attrs}})
})) }))
//circleAttrs.concat(app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer().children[0]) //circleAttrs.concat(app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer().children[0])
return circlesAttrs.flat().map((e) => { return circlesAttrs.flat().map((e) => {
return { return {
type: 'Circle', type: 'Circle',
center: { center: {
x: e.x, x: e.attrs.x,
y: e.y y: e.attrs.y
}, },
radius: e.radius, radius: e.attrs.radius,
id: e.id id: e.parent.id
} }
}) })
} }
function postRois() { function postRois() {
roisAttrs = app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer().getChildren().filter(e => e.attrs.name == 'roi-group').map( roisAttrs = []
(e) => {
console.log(e, "eeeeee")
return e.children.filter(
(ee) => {
console.log(e)
return ee.attrs.name == 'shape'
}
).map(e => e.attrs)
}
)
roisAttrs = roisAttrs.concat(app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer().children[0].children.filter(e => e.attrs.name == 'roi-group').map((e) => { roisAttrs = roisAttrs.concat(app.getActiveLayerGroup().getActiveDrawLayer().getKonvaLayer().children[0].children.filter(e => e.attrs.name == 'roi-group').map((e) => {
return e.children.filter((e) => e.attrs.name == 'shape').map(e => e.attrs) return e.children.filter((e) => e.attrs.name == 'shape').map(e => {return {attrs: e.attrs, parent: e.parent.attrs}})
})) }))
return roisAttrs.flat().map((e) => { return roisAttrs.flat().map((e) => {
console.log(e)
var points = []; var points = [];
for (var i = 0; i < e.points.length; i+=2) { for (var i = 0; i < e.attrs.points.length; i+=2) {
points.push({x: e.points[i], y: e.points[i+1]}) points.push({x: e.attrs.points[i], y: e.attrs.points[i+1]})
} }
return { return {
type: 'Roi', type: 'Roi',
points: points, points: points,
id: e.id id: e.parent.id
} }
}) })
} }
function postDraws() { function postDraws() {
return postCircles().concat(postRois()) console.log(postRois())
return JSON.parse(JSON.stringify(postCircles().concat(postRois())))
} }
@ -202,6 +210,9 @@ function receiveMessage(event)
else if (data.type == 'deleteById') { else if (data.type == 'deleteById') {
app.getActiveLayerGroup().getActiveDrawLayer().getKonvaStage().find("#"+data.data)[0].destroy() app.getActiveLayerGroup().getActiveDrawLayer().getKonvaStage().find("#"+data.data)[0].destroy()
} }
else if (data.type == 'loadSchema') {
schema = loadSchema(data.data)
}
} }
window.addEventListener("message", receiveMessage, false); window.addEventListener("message", receiveMessage, false);
@ -211,7 +222,6 @@ function findActive() {
(e) => { (e) => {
return e.children.filter( return e.children.filter(
(ee) => { (ee) => {
console.log(e)
return ee.attrs.name == 'anchor' return ee.attrs.name == 'anchor'
} }
) )
@ -221,7 +231,6 @@ function findActive() {
return e.children.filter((e) => e.attrs.name == 'anchor') return e.children.filter((e) => e.attrs.name == 'anchor')
})) }))
active = new Set(activeCandidates.flat().map(e => e.parent.id())) active = new Set(activeCandidates.flat().map(e => e.parent.id()))
console.log(activeCandidates, active)
return [...active][0] return [...active][0]
} }
@ -230,11 +239,89 @@ app.addEventListener('loadend', function () {
//range.max = app.getImage(0).getGeometry().getSize().get(2) - 1; //range.max = app.getImage(0).getGeometry().getSize().get(2) - 1;
}); });
//app.loadURLs(['https://raw.githubusercontent.com/ivmartel/dwv/master/tests/data/bbmri-53323851.dcm'])
// schema = [
// {
// 'url': 'https://raw.githubusercontent.com/ivmartel/dwv/master/tests/data/bbmri-53323851.dcm',
// 'figures': [
// {type: 'Circle', center: {x: 10, y: 100}, radius: 10},
// {type: 'Roi', points: [{x: 10, y: 20}, {x: 100, y: 50}]}
// ]
// },
// {
// 'url': 'https://raw.githubusercontent.com/ivmartel/dwv/master/tests/data/bbmri-53323707.dcm',
// 'figures': [
// {type: 'Circle', center: {x: 10, y: 200}, radius: 10},
// {type: 'Roi', points: [{x: 10, y: 30}, {x: 100, y: 50}]}
// ]
// }
// ]
// schema = loadSchema(schema)
// console.log(schema[0], "0")
// app.loadURLs(schema[0])
// app.loadURLs([
// 'https://raw.githubusercontent.com/ivmartel/dwv/master/tests/data/bbmri-53323851.dcm',
// 'https://raw.githubusercontent.com/ivmartel/dwv/master/tests/data/bbmri-53323707.dcm',
// 'https://raw.githubusercontent.com/ivmartel/dwv/master/tests/data/bbmri-53323563.dcm'
// ])
function setFrame(frameNumber) {
var lg = app.getLayerGroupById(0);
var vc = lg.getActiveViewLayer().getViewController();
var index = vc.getCurrentIndex();
var values = index.getValues();
values[2] = frameNumber;
vc.setCurrentIndex(new dwv.math.Index(values));
loadPictures(
schema[1].get(schema[0][frameNumber])
)
}
function loadPictures(pictures) {
// app.deleteDraws()
deleteDraws()
app.setTool('Draw')
pictures.map((e) => {
if (e.type == 'Circle') {
createCircle(e)
}
else if (e.type == 'Roi') {
createRoi(e)
}
})
}
function deleteDraws() {
app.getActiveLayerGroup().getActiveDrawLayer().getKonvaStage().find('.circle-group').map((e) => e.destroy())
app.getActiveLayerGroup().getActiveDrawLayer().getKonvaStage().find('.roi-group').map((e) => e.destroy())
}
app.addEventListener('load', () => { app.addEventListener('load', () => {
// app.setDrawShape('Roi')
app.setTool("Scroll")
setFrame(0)
// loadPictures([
// {type: 'Circle', center: {x: 10, y: 100}, radius: 10},
// {type: 'Roi', points: [{x: 10, y: 20}, {x: 100, y: 50}]}
// ])
setTimeout(() => {
setFrame(1)
}, 1000)
var lg = app.getLayerGroupById(0);
var vc = lg.getActiveViewLayer().getViewController();
console.log(vc.getCurrentScrollIndexValue())
//app.getActiveLayerGroup().getActiveViewLayer().getViewController().setCurrentIndex(new dwv.math.Index(1))
app.getActiveLayerGroup().getActiveDrawLayer().getKonvaStage().addEventListener('mouseup', () => { app.getActiveLayerGroup().getActiveDrawLayer().getKonvaStage().addEventListener('mouseup', () => {
setTimeout(() => {
parent.postMessage({'type': 'returnDraws', data: postDraws()}, "*") parent.postMessage({'type': 'returnDraws', data: postDraws()}, "*")
//console.log({'type': 'returnDraws', data: postDraws()})
}, 100)
}) })
// createCircle({ // createCircle({
// type: 'Circle', // type: 'Circle',