Mercurial > hg > orthanc-stone
comparison Applications/StoneWebViewer/WebApplication/app.js @ 2022:96d20b42e740
support of virtual series upon up/down keys
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 03 Dec 2022 17:42:12 +0100 |
parents | 88673f50d7b9 |
children | e0b7b2a8b914 |
comparison
equal
deleted
inserted
replaced
2021:1458f3bcb991 | 2022:96d20b42e740 |
---|---|
600 }); | 600 }); |
601 } | 601 } |
602 }, | 602 }, |
603 | 603 |
604 GetActiveViewportSeriesTags: function() { | 604 GetActiveViewportSeriesTags: function() { |
605 if (this.activeViewport == 1 && | 605 if (this.activeViewport == 1) { |
606 this.viewport1Content.virtualSeriesId === undefined) { | |
607 return this.viewport1Content.series.tags; | 606 return this.viewport1Content.series.tags; |
608 } | 607 } |
609 else if (this.activeViewport == 2 && | 608 else if (this.activeViewport == 2) { |
610 this.viewport2Content.virtualSeriesId === undefined) { | |
611 return this.viewport2Content.series.tags; | 609 return this.viewport2Content.series.tags; |
612 } | 610 } |
613 else if (this.activeViewport == 3 && | 611 else if (this.activeViewport == 3) { |
614 this.viewport3Content.virtualSeriesId === undefined) { | |
615 return this.viewport3Content.series.tags; | 612 return this.viewport3Content.series.tags; |
616 } | 613 } |
617 else if (this.activeViewport == 4 && | 614 else if (this.activeViewport == 4) { |
618 this.viewport4Content.virtualSeriesId === undefined) { | |
619 return this.viewport4Content.series.tags; | 615 return this.viewport4Content.series.tags; |
620 } | 616 } |
621 else { | 617 else { |
622 return null; | 618 return null; |
623 } | 619 } |
764 | 760 |
765 SetViewportSeriesInstanceUid: function(viewportIndex, seriesInstanceUid) { | 761 SetViewportSeriesInstanceUid: function(viewportIndex, seriesInstanceUid) { |
766 if (seriesInstanceUid in this.seriesIndex) { | 762 if (seriesInstanceUid in this.seriesIndex) { |
767 this.SetViewportSeries(viewportIndex, { | 763 this.SetViewportSeries(viewportIndex, { |
768 seriesIndex: this.seriesIndex[seriesInstanceUid] | 764 seriesIndex: this.seriesIndex[seriesInstanceUid] |
765 }); | |
766 } | |
767 }, | |
768 | |
769 SetViewportVirtualSeries: function(viewportIndex, seriesInstanceUid, virtualSeriesId) { | |
770 if (seriesInstanceUid in this.seriesIndex) { | |
771 this.SetViewportSeries(viewportIndex, { | |
772 seriesIndex: this.seriesIndex[seriesInstanceUid], | |
773 virtualSeriesId: virtualSeriesId | |
769 }); | 774 }); |
770 } | 775 } |
771 }, | 776 }, |
772 | 777 |
773 SetViewportSeries: function(viewportIndex, info) { | 778 SetViewportSeries: function(viewportIndex, info) { |
1234 ChangeActiveSeries: function(offset) { | 1239 ChangeActiveSeries: function(offset) { |
1235 var seriesTags = this.GetActiveViewportSeriesTags(); | 1240 var seriesTags = this.GetActiveViewportSeriesTags(); |
1236 if (seriesTags !== null) { | 1241 if (seriesTags !== null) { |
1237 var studyIndex = LookupIndexOfResource(this.studies, STUDY_INSTANCE_UID, seriesTags[STUDY_INSTANCE_UID]); | 1242 var studyIndex = LookupIndexOfResource(this.studies, STUDY_INSTANCE_UID, seriesTags[STUDY_INSTANCE_UID]); |
1238 if (studyIndex != -1) { | 1243 if (studyIndex != -1) { |
1244 var virtualSeriesId = this.GetActiveVirtualSeries(); | |
1245 if (virtualSeriesId.length > 0) { | |
1246 virtualSeriesId = virtualSeriesId[0]; | |
1247 } else { | |
1248 virtualSeriesId = ''; | |
1249 } | |
1250 | |
1239 var seriesInStudyIndices = this.studies[studyIndex].series; | 1251 var seriesInStudyIndices = this.studies[studyIndex].series; |
1240 for (var i = 0; i < seriesInStudyIndices.length; i++) { | 1252 for (var i = 0; i < seriesInStudyIndices.length; i++) { |
1253 var series = this.series[seriesInStudyIndices[i]]; | |
1241 if (this.series[seriesInStudyIndices[i]].tags[SERIES_INSTANCE_UID] == seriesTags[SERIES_INSTANCE_UID]) { | 1254 if (this.series[seriesInStudyIndices[i]].tags[SERIES_INSTANCE_UID] == seriesTags[SERIES_INSTANCE_UID]) { |
1242 var next = i + offset; | 1255 if (series.virtualSeries !== null) { |
1243 if (next >= 0 && | 1256 for (var j = 0; j < series.virtualSeries.length; j++) { |
1244 next < seriesInStudyIndices.length) { | 1257 if (series.virtualSeries[j].ID == virtualSeriesId) { |
1245 this.SetViewportSeriesInstanceUid(this.activeViewport, this.series[seriesInStudyIndices[next]].tags[SERIES_INSTANCE_UID]); | 1258 var next = j + offset; |
1259 if (next >= 0 && | |
1260 next < series.virtualSeries.length) { | |
1261 this.SetViewportVirtualSeries(this.activeViewport, seriesTags[SERIES_INSTANCE_UID], series.virtualSeries[next].ID); | |
1262 } | |
1263 return; | |
1264 } | |
1265 } | |
1246 } | 1266 } |
1247 break; | 1267 else { |
1268 var next = i + offset; | |
1269 if (next >= 0 && | |
1270 next < seriesInStudyIndices.length) { | |
1271 this.SetViewportSeriesInstanceUid(this.activeViewport, this.series[seriesInStudyIndices[next]].tags[SERIES_INSTANCE_UID]); | |
1272 } | |
1273 return; | |
1274 } | |
1248 } | 1275 } |
1249 } | 1276 } |
1250 } | 1277 } |
1251 } | 1278 } |
1252 }, | 1279 }, |
1261 next < this.studies.length) { | 1288 next < this.studies.length) { |
1262 var nextStudy = this.studies[next]; | 1289 var nextStudy = this.studies[next]; |
1263 if (nextStudy.series.length > 0) { | 1290 if (nextStudy.series.length > 0) { |
1264 var seriesIndex = nextStudy.series[0]; | 1291 var seriesIndex = nextStudy.series[0]; |
1265 if (this.series[seriesIndex].virtualSeries !== null) { | 1292 if (this.series[seriesIndex].virtualSeries !== null) { |
1266 this.ClickVirtualSeries(seriesIndex, this.series[seriesIndex].virtualSeries); | 1293 this.ClickVirtualSeries(seriesIndex, this.series[seriesIndex].virtualSeries[0].ID); |
1267 } else { | 1294 } else { |
1268 this.ClickSeries(seriesIndex); | 1295 this.ClickSeries(seriesIndex); |
1269 } | 1296 } |
1270 } | 1297 } |
1271 } | 1298 } |
1337 if (canvas != '') { | 1364 if (canvas != '') { |
1338 switch (event.key) { | 1365 switch (event.key) { |
1339 case 'Left': | 1366 case 'Left': |
1340 case 'ArrowLeft': | 1367 case 'ArrowLeft': |
1341 stone.DecrementFrame(canvas, false); | 1368 stone.DecrementFrame(canvas, false); |
1342 event.preventDefault(); | |
1343 break; | 1369 break; |
1344 | 1370 |
1345 case 'Right': | 1371 case 'Right': |
1346 case 'ArrowRight': | 1372 case 'ArrowRight': |
1347 stone.IncrementFrame(canvas, false); | 1373 stone.IncrementFrame(canvas, false); |
1348 event.preventDefault(); | |
1349 break; | 1374 break; |
1350 | 1375 |
1351 case 'Up': | 1376 case 'Up': |
1352 case 'ArrowUp': | 1377 case 'ArrowUp': |
1353 that.ChangeActiveSeries(-1); | 1378 that.ChangeActiveSeries(-1); |
1358 that.ChangeActiveSeries(1); | 1383 that.ChangeActiveSeries(1); |
1359 break; | 1384 break; |
1360 | 1385 |
1361 case 'PageUp': | 1386 case 'PageUp': |
1362 that.ChangeActiveStudy(-1); | 1387 that.ChangeActiveStudy(-1); |
1363 break | 1388 break; |
1364 | 1389 |
1365 case 'PageDown': | 1390 case 'PageDown': |
1366 that.ChangeActiveStudy(1); | 1391 that.ChangeActiveStudy(1); |
1367 break; | 1392 break; |
1368 | 1393 |
1369 case ' ': | 1394 case ' ': |
1370 case 'Space': | 1395 case 'Space': |
1371 dispatchEvent(new CustomEvent('KeyCineSwitch', { })); | 1396 dispatchEvent(new CustomEvent('KeyCineSwitch', { })); |
1372 event.preventDefault(); | |
1373 break; | 1397 break; |
1374 | 1398 |
1375 default: | 1399 default: |
1376 break; | 1400 break; |
1377 } | 1401 } |