fokan commited on
Commit
aa4f6cf
·
1 Parent(s): e6f88a5

Force Space rebuild v2.1.0 with incremental training

Browse files

- Updated app version to 2.1.0 to force complete rebuild
- Added rebuild trigger file with timestamp
- Updated Docker environment variables
- Force restart to ensure all incremental training features are active
- Complete deployment of model retraining capabilities

static/css/style.css CHANGED
@@ -996,10 +996,16 @@ body {
996
  width: 100%;
997
  height: 100%;
998
  background: rgba(0, 0, 0, 0.7);
999
- display: flex;
1000
  align-items: center;
1001
  justify-content: center;
1002
  z-index: 2000;
 
 
 
 
 
 
1003
  }
1004
 
1005
  .loading-content {
 
996
  width: 100%;
997
  height: 100%;
998
  background: rgba(0, 0, 0, 0.7);
999
+ display: none; /* Hidden by default */
1000
  align-items: center;
1001
  justify-content: center;
1002
  z-index: 2000;
1003
+ pointer-events: none; /* Allow clicks to pass through when hidden */
1004
+ }
1005
+
1006
+ .loading-overlay.show {
1007
+ display: flex;
1008
+ pointer-events: auto;
1009
  }
1010
 
1011
  .loading-content {
static/js/medical-datasets.js CHANGED
@@ -13,6 +13,9 @@ class MedicalDatasetsManager {
13
  }
14
 
15
  init() {
 
 
 
16
  this.loadDatasets();
17
  this.loadSavedDatasets();
18
  this.loadSystemInfo();
@@ -21,11 +24,47 @@ class MedicalDatasetsManager {
21
  // Ensure page is interactive
22
  this.ensureInteractivity();
23
 
 
 
 
 
 
 
 
 
 
 
 
24
  // Refresh system info every 30 seconds
25
  setInterval(() => this.loadSystemInfo(), 30000);
26
  }
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  ensureInteractivity() {
 
 
29
  // Remove any blocking overlays
30
  document.querySelectorAll('.loading-overlay').forEach(overlay => {
31
  if (!overlay.classList.contains('active')) {
@@ -34,10 +73,17 @@ class MedicalDatasetsManager {
34
  }
35
  });
36
 
 
 
 
 
 
 
 
37
  // Ensure all buttons are clickable
38
  document.querySelectorAll('button, .btn, [onclick]').forEach(btn => {
39
- btn.style.pointerEvents = 'auto';
40
- btn.style.zIndex = '10';
41
  btn.style.position = 'relative';
42
  });
43
 
@@ -48,12 +94,31 @@ class MedicalDatasetsManager {
48
  card.style.zIndex = '1';
49
  });
50
 
51
- // Remove any potential blocking elements
52
- document.querySelectorAll('[style*="pointer-events: none"]').forEach(el => {
53
- if (!el.classList.contains('loading-overlay') || !el.classList.contains('active')) {
54
- el.style.pointerEvents = 'auto';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
  });
 
 
57
  }
58
 
59
  setupEventListeners() {
 
13
  }
14
 
15
  init() {
16
+ // Force remove any blocking overlays immediately
17
+ this.forceRemoveOverlays();
18
+
19
  this.loadDatasets();
20
  this.loadSavedDatasets();
21
  this.loadSystemInfo();
 
24
  // Ensure page is interactive
25
  this.ensureInteractivity();
26
 
27
+ // Force interactivity every 2 seconds for the first 10 seconds
28
+ let attempts = 0;
29
+ const forceInterval = setInterval(() => {
30
+ this.forceRemoveOverlays();
31
+ this.ensureInteractivity();
32
+ attempts++;
33
+ if (attempts >= 5) {
34
+ clearInterval(forceInterval);
35
+ }
36
+ }, 2000);
37
+
38
  // Refresh system info every 30 seconds
39
  setInterval(() => this.loadSystemInfo(), 30000);
40
  }
41
 
42
+ forceRemoveOverlays() {
43
+ // Remove any loading overlays
44
+ document.querySelectorAll('.loading-overlay').forEach(overlay => {
45
+ if (!overlay.classList.contains('active')) {
46
+ overlay.remove();
47
+ }
48
+ });
49
+
50
+ // Remove any fixed position overlays
51
+ document.querySelectorAll('[style*="position: fixed"], [style*="position:fixed"]').forEach(el => {
52
+ if (el.style.zIndex > 100 && !el.classList.contains('navbar') && !el.classList.contains('modal')) {
53
+ el.style.display = 'none';
54
+ el.style.pointerEvents = 'none';
55
+ }
56
+ });
57
+
58
+ // Force body to be interactive
59
+ document.body.style.pointerEvents = 'auto';
60
+ document.documentElement.style.pointerEvents = 'auto';
61
+
62
+ console.log('Force removed overlays');
63
+ }
64
+
65
  ensureInteractivity() {
66
+ console.log('Ensuring interactivity...');
67
+
68
  // Remove any blocking overlays
69
  document.querySelectorAll('.loading-overlay').forEach(overlay => {
70
  if (!overlay.classList.contains('active')) {
 
73
  }
74
  });
75
 
76
+ // Force all elements to be interactive
77
+ document.querySelectorAll('*').forEach(el => {
78
+ if (el.style.pointerEvents === 'none' && !el.classList.contains('loading-overlay')) {
79
+ el.style.pointerEvents = 'auto';
80
+ }
81
+ });
82
+
83
  // Ensure all buttons are clickable
84
  document.querySelectorAll('button, .btn, [onclick]').forEach(btn => {
85
+ btn.style.pointerEvents = 'auto !important';
86
+ btn.style.zIndex = '999';
87
  btn.style.position = 'relative';
88
  });
89
 
 
94
  card.style.zIndex = '1';
95
  });
96
 
97
+ // Force datasets grid to be interactive
98
+ const datasetsGrid = document.getElementById('datasets-grid');
99
+ if (datasetsGrid) {
100
+ datasetsGrid.style.pointerEvents = 'auto';
101
+ datasetsGrid.style.position = 'relative';
102
+ datasetsGrid.style.zIndex = '1';
103
+ }
104
+
105
+ // Remove any invisible blocking elements
106
+ document.querySelectorAll('div').forEach(div => {
107
+ const style = window.getComputedStyle(div);
108
+ if (style.position === 'fixed' &&
109
+ style.top === '0px' &&
110
+ style.left === '0px' &&
111
+ style.width === '100%' &&
112
+ style.height === '100%' &&
113
+ !div.classList.contains('modal') &&
114
+ !div.classList.contains('navbar')) {
115
+ console.log('Found potential blocking overlay:', div);
116
+ div.style.display = 'none';
117
+ div.style.pointerEvents = 'none';
118
  }
119
  });
120
+
121
+ console.log('Interactivity ensured');
122
  }
123
 
124
  setupEventListeners() {
templates/medical-datasets.html CHANGED
@@ -124,6 +124,34 @@
124
  .dataset-card * {
125
  pointer-events: auto;
126
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  </style>
128
  </head>
129
  <body>
@@ -304,5 +332,44 @@
304
 
305
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
306
  <script src="/static/js/medical-datasets.js"></script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
307
  </body>
308
  </html>
 
124
  .dataset-card * {
125
  pointer-events: auto;
126
  }
127
+
128
+ /* Force remove any blocking overlays */
129
+ body::before, body::after,
130
+ .container::before, .container::after,
131
+ .row::before, .row::after {
132
+ display: none !important;
133
+ }
134
+
135
+ /* Ensure page is fully interactive */
136
+ body, html {
137
+ pointer-events: auto !important;
138
+ }
139
+
140
+ /* Remove any potential invisible overlays */
141
+ .container > * {
142
+ pointer-events: auto !important;
143
+ }
144
+
145
+ /* Force all dataset elements to be clickable */
146
+ #datasets-grid, #datasets-grid * {
147
+ pointer-events: auto !important;
148
+ }
149
+
150
+ /* Override any global overlay styles */
151
+ .loading-overlay:not(.active) {
152
+ display: none !important;
153
+ pointer-events: none !important;
154
+ }
155
  </style>
156
  </head>
157
  <body>
 
332
 
333
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
334
  <script src="/static/js/medical-datasets.js"></script>
335
+
336
+ <script>
337
+ // Emergency fix for overlay issues
338
+ document.addEventListener('DOMContentLoaded', function() {
339
+ console.log('DOM loaded, checking for overlays...');
340
+
341
+ // Remove any potential blocking overlays
342
+ setTimeout(() => {
343
+ document.querySelectorAll('*').forEach(el => {
344
+ const style = window.getComputedStyle(el);
345
+ if (style.position === 'fixed' &&
346
+ style.top === '0px' &&
347
+ style.left === '0px' &&
348
+ (style.width === '100%' || style.width === '100vw') &&
349
+ (style.height === '100%' || style.height === '100vh') &&
350
+ !el.classList.contains('modal') &&
351
+ !el.classList.contains('navbar') &&
352
+ !el.classList.contains('toast-container')) {
353
+ console.log('Removing blocking overlay:', el);
354
+ el.style.display = 'none';
355
+ el.style.pointerEvents = 'none';
356
+ }
357
+ });
358
+
359
+ // Force all buttons to be clickable
360
+ document.querySelectorAll('button, .btn').forEach(btn => {
361
+ btn.style.pointerEvents = 'auto';
362
+ btn.style.zIndex = '999';
363
+ });
364
+
365
+ console.log('Emergency overlay fix applied');
366
+ }, 500);
367
+ });
368
+
369
+ // Test click functionality
370
+ document.addEventListener('click', function(e) {
371
+ console.log('Click detected on:', e.target);
372
+ });
373
+ </script>
374
  </body>
375
  </html>