blackshadow1 commited on
Commit
0b2eb5a
·
verified ·
1 Parent(s): e96d834

updated code UI ✅✅

Browse files
Files changed (1) hide show
  1. mediSync/app.py +72 -48
mediSync/app.py CHANGED
@@ -727,65 +727,89 @@ def create_interface():
727
  outputs=[end_consultation_status]
728
  )
729
 
730
- # JavaScript for appointment ID auto-population (as in working_hugging_face_code.py)
 
731
  gr.HTML("""
732
  <script>
733
- function getUrlParameter(name) {
734
- name = name.replace(/[[]/, '\\[').replace(/[\]]/, '\\]');
735
- var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
736
- var results = regex.exec(window.location.search);
737
- return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));
738
- }
739
- function setAppointmentIdValue(val) {
740
- // Try by ID (Gradio 3.x and some 4.x)
741
- var input = document.getElementById('appointment_id_input');
742
- if (input) {
743
- input.value = val;
744
- input.dispatchEvent(new Event('input', { bubbles: true }));
745
- return true;
746
  }
747
- // Try Gradio 4.x shadow DOM
748
- var gradioApp = document.querySelector('gradio-app') || document.querySelector('body');
749
- if (gradioApp) {
750
- // Find textbox by label
751
- var labels = gradioApp.querySelectorAll('label');
752
- for (var i = 0; i < labels.length; i++) {
753
- if (labels[i].textContent.trim().toLowerCase().includes('appointment id')) {
754
- // Find the input in the same parent
755
- var parent = labels[i].parentElement;
756
- var textbox = parent.querySelector('input[type="text"], textarea');
757
- if (textbox) {
758
- textbox.value = val;
759
- textbox.dispatchEvent(new Event('input', { bubbles: true }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
760
  return true;
761
  }
762
  }
763
  }
 
 
 
 
 
 
 
 
 
 
 
764
  }
765
- // Try all textboxes for fallback
766
- var allInputs = document.querySelectorAll('input[type="text"], textarea');
767
- for (var i = 0; i < allInputs.length; i++) {
768
- if (allInputs[i].placeholder && allInputs[i].placeholder.toLowerCase().includes('appointment id')) {
769
- allInputs[i].value = val;
770
- allInputs[i].dispatchEvent(new Event('input', { bubbles: true }));
771
- return true;
772
  }
773
  }
774
- return false;
775
- }
776
- function tryPopulateAppointmentId() {
777
- var appointmentId = getUrlParameter('appointment_id');
778
- if (appointmentId) {
779
- setAppointmentIdValue(appointmentId);
 
 
 
 
 
 
780
  }
781
- }
782
- document.addEventListener('DOMContentLoaded', function() {
783
- setTimeout(tryPopulateAppointmentId, 400);
784
- });
785
- window.addEventListener('load', function() {
786
- setTimeout(tryPopulateAppointmentId, 1000);
787
- });
788
- setTimeout(tryPopulateAppointmentId, 2000);
789
  </script>
790
  """)
791
 
 
727
  outputs=[end_consultation_status]
728
  )
729
 
730
+ # --- FIXED: Improved JavaScript for appointment ID auto-population ---
731
+ # This script will robustly set the value of the Gradio textbox, even in Gradio 4.x shadow DOM.
732
  gr.HTML("""
733
  <script>
734
+ (function() {
735
+ function getUrlParameter(name) {
736
+ name = name.replace(/[[]/, '\\[').replace(/[\]]/, '\\]');
737
+ var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
738
+ var results = regex.exec(window.location.search);
739
+ return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));
 
 
 
 
 
 
 
740
  }
741
+
742
+ function setAppointmentIdValue(val) {
743
+ // Try by element id (Gradio 3.x and some 4.x)
744
+ var input = document.getElementById('appointment_id_input');
745
+ if (input) {
746
+ input.value = val;
747
+ input.dispatchEvent(new Event('input', { bubbles: true }));
748
+ input.dispatchEvent(new Event('change', { bubbles: true }));
749
+ return true;
750
+ }
751
+ // Try Gradio 4.x shadow DOM
752
+ var gradioApp = document.querySelector('gradio-app');
753
+ if (gradioApp && gradioApp.shadowRoot) {
754
+ // Try to find textbox by label text
755
+ var labels = gradioApp.shadowRoot.querySelectorAll('label');
756
+ for (var i = 0; i < labels.length; i++) {
757
+ if (labels[i].textContent.trim().toLowerCase().includes('appointment id')) {
758
+ // Find the input in the same parent
759
+ var parent = labels[i].parentElement;
760
+ var textbox = parent.querySelector('input[type="text"], textarea');
761
+ if (textbox) {
762
+ textbox.value = val;
763
+ textbox.dispatchEvent(new Event('input', { bubbles: true }));
764
+ textbox.dispatchEvent(new Event('change', { bubbles: true }));
765
+ return true;
766
+ }
767
+ }
768
+ }
769
+ // Fallback: try all textboxes in shadowRoot
770
+ var allInputs = gradioApp.shadowRoot.querySelectorAll('input[type="text"], textarea');
771
+ for (var i = 0; i < allInputs.length; i++) {
772
+ if (allInputs[i].placeholder && allInputs[i].placeholder.toLowerCase().includes('appointment id')) {
773
+ allInputs[i].value = val;
774
+ allInputs[i].dispatchEvent(new Event('input', { bubbles: true }));
775
+ allInputs[i].dispatchEvent(new Event('change', { bubbles: true }));
776
  return true;
777
  }
778
  }
779
  }
780
+ // Try all textboxes for fallback (outside shadow DOM)
781
+ var allInputs = document.querySelectorAll('input[type="text"], textarea');
782
+ for (var i = 0; i < allInputs.length; i++) {
783
+ if (allInputs[i].placeholder && allInputs[i].placeholder.toLowerCase().includes('appointment id')) {
784
+ allInputs[i].value = val;
785
+ allInputs[i].dispatchEvent(new Event('input', { bubbles: true }));
786
+ allInputs[i].dispatchEvent(new Event('change', { bubbles: true }));
787
+ return true;
788
+ }
789
+ }
790
+ return false;
791
  }
792
+
793
+ function tryPopulateAppointmentId() {
794
+ var appointmentId = getUrlParameter('appointment_id');
795
+ if (appointmentId) {
796
+ setAppointmentIdValue(appointmentId);
 
 
797
  }
798
  }
799
+
800
+ // Try multiple times and on different events for robustness
801
+ document.addEventListener('DOMContentLoaded', function() {
802
+ setTimeout(tryPopulateAppointmentId, 200);
803
+ setTimeout(tryPopulateAppointmentId, 800);
804
+ });
805
+ window.addEventListener('load', function() {
806
+ setTimeout(tryPopulateAppointmentId, 1200);
807
+ });
808
+ // Also try periodically for 3 seconds
809
+ for (let t = 0; t <= 3000; t += 400) {
810
+ setTimeout(tryPopulateAppointmentId, t);
811
  }
812
+ })();
 
 
 
 
 
 
 
813
  </script>
814
  """)
815