From 375eab5fb364c07531ffdb19f5c085f5c5888e6f Mon Sep 17 00:00:00 2001
From: Arthur Masson <arthur.masson@inria.fr>
Date: Thu, 25 Jan 2024 17:40:31 +0100
Subject: [PATCH] force loading, show loader icon until all images are loaded
 to prevent from going to next patient when images are not loaded (which
 causes problems)

---
 main.js | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/main.js b/main.js
index cbb1c26..ebfd796 100644
--- a/main.js
+++ b/main.js
@@ -547,6 +547,7 @@ let load_lesion_viewer = (images, image_parameters, lesion, lesion_index) => {
     if(lesion['location_voxel'] != 'image_center') {
         params['coordinate'] = lesion['location_voxel']
     }
+    let loaded_viewer = []
     params['smoothDisplay'] = false
     params['loadingComplete'] = () => {
 
@@ -571,7 +572,6 @@ let load_lesion_viewer = (images, image_parameters, lesion, lesion_index) => {
                 }
             }
         }
-
         // let container = document.getElementById('toggle-visibility-buttons')
         // let checkboxes = document.getElementsByTagName('input')
         // for(let checkbox of checkboxes) {
@@ -587,6 +587,11 @@ let load_lesion_viewer = (images, image_parameters, lesion, lesion_index) => {
             papaya.Container.removeImage(1, 0)
             papayaContainers[1].viewer.setCurrentScreenVol(0)
         }
+        loaded_viewer.push(1)
+        // If both viewer are loaded: hide_loader
+        if(loaded_viewer.length==2 && loaded_viewer.indexOf(0) >= 0 && loaded_viewer.indexOf(1) >= 0) {
+            hide_loader()
+        }
     }
 
     let description = document.getElementById('description')
@@ -633,11 +638,14 @@ let load_lesion_viewer = (images, image_parameters, lesion, lesion_index) => {
         papayaContainers[0].toolbar.updateImageButtons()
         papayaContainers[0].viewer.setCurrentScreenVol(0)
         viewer.drawViewer(true, false)
+        loaded_viewer.push(0)
+        // If both viewer are loaded: hide_loader
+        if(loaded_viewer.length==2 && loaded_viewer.indexOf(0) >= 0 && loaded_viewer.indexOf(1) >= 0) {
+            hide_loader()
+        }
     }
     papaya.Container.resetViewer(0, params);
 
-    hide_loader()
-
     let canvas = papayaContainers[0].viewer.canvas
     canvas.addEventListener('mousemove', on_mouse_move, false);
     canvas.addEventListener('mousedown', on_mouse_down, false);
@@ -1242,17 +1250,17 @@ let load_lesion = (i, skip_current_lesion_time_update=false) => {
 
     let image_parameters = []
 
-    let need_to_load = false
+    let need_to_load = true // Force loading
 
     empty_edits()
     
-    for (let image_description of image_descriptions) {
-        if (loaded_images.length == 0 || loaded_images.findIndex((i) => i.file_name.split('/').at(-1) == image_description.file) < 0) {
-        // if (loaded_images.length == 0 || loaded_images.findIndex((i) => i.file_name == image_description.file) < 0) {
-            need_to_load = true;
-            break
-        }
-    }
+    // for (let image_description of image_descriptions) {
+    //     if (loaded_images.length == 0 || loaded_images.findIndex((i) => i.file_name.split('/').at(-1) == image_description.file) < 0) {
+    //     // if (loaded_images.length == 0 || loaded_images.findIndex((i) => i.file_name == image_description.file) < 0) {
+    //         need_to_load = true;
+    //         break
+    //     }
+    // }
 
     let editable_image_index = get_editable_image_index()
     let draw_tools = document.getElementById('draw_tools')