TilanB commited on
Commit
25c4d23
·
verified ·
1 Parent(s): 5b50ed4
Files changed (1) hide show
  1. main.py +85 -2
main.py CHANGED
@@ -517,9 +517,92 @@ def main():
517
  margin-bottom: 16px !important;
518
  }
519
  """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
520
 
 
 
 
521
 
522
- with gr.Blocks(theme=gr.themes.Soft(), title="SmartDoc AI", css=css) as demo:
523
  gr.Markdown("### SmartDoc AI - Document Q&A", elem_classes="app-title")
524
  gr.Markdown("Upload your documents and ask questions. Answers will appear below, just like a chat.", elem_classes="app-description")
525
  gr.Markdown("---")
@@ -808,7 +891,7 @@ def main():
808
  if is_hf_space:
809
  # Hugging Face Spaces configuration
810
  logger.info("Running on Hugging Face Spaces")
811
- demo.launch(server_name="0.0.0.0", server_port=7860)
812
  else:
813
  # Local development configuration
814
  configured_port = int(os.environ.get("GRADIO_SERVER_PORT", "7860"))
 
517
  margin-bottom: 16px !important;
518
  }
519
  """
520
+ js = r'''
521
+ const uploadMessages = [
522
+ "Crunching your documents...",
523
+ "Warming up the AI...",
524
+ "Extracting knowledge...",
525
+ "Scanning for insights...",
526
+ "Preparing your data...",
527
+ "Looking for answers...",
528
+ "Analyzing file structure...",
529
+ "Reading your files...",
530
+ "Indexing content...",
531
+ "Almost ready..."
532
+ ];
533
+
534
+ let msgInterval = null;
535
+ let timerInterval = null;
536
+ let startMs = 0;
537
+ let lastMsg = null;
538
+
539
+ function root() {
540
+ return document.getElementById("processing-message");
541
+ }
542
+ function isVisible(el) {
543
+ return !!(el && (el.offsetWidth || el.offsetHeight || el.getClientRects().length));
544
+ }
545
+ function pickMsg() {
546
+ if (uploadMessages.length === 0) return "";
547
+ if (uploadMessages.length === 1) return uploadMessages[0];
548
+ let m;
549
+ do { m = uploadMessages[Math.floor(Math.random() * uploadMessages.length)]; }
550
+ while (m === lastMsg);
551
+ lastMsg = m;
552
+ return m;
553
+ }
554
+ function getMsgSpan() {
555
+ const r = root();
556
+ return r ? r.querySelector("#processing-msg") : null;
557
+ }
558
+ function getTimerSpan() {
559
+ const r = root();
560
+ return r ? r.querySelector("#processing-timer") : null;
561
+ }
562
+ function setMsg(t) {
563
+ const s = getMsgSpan();
564
+ if (s) s.textContent = t;
565
+ }
566
+ function fmtElapsed() {
567
+ return ((Date.now() - startMs) / 1000).toFixed(1) + "s elapsed";
568
+ }
569
+
570
+ function start() {
571
+ if (msgInterval || timerInterval) return;
572
+ startMs = Date.now();
573
+ setMsg(pickMsg());
574
+
575
+ msgInterval = setInterval(() => setMsg(pickMsg()), 2000);
576
+
577
+ const t = getTimerSpan();
578
+ if (t) {
579
+ t.textContent = fmtElapsed();
580
+ timerInterval = setInterval(() => { t.textContent = fmtElapsed(); }, 200);
581
+ }
582
+ }
583
+
584
+ function stop() {
585
+ if (msgInterval) { clearInterval(msgInterval); msgInterval = null; }
586
+ if (timerInterval) { clearInterval(timerInterval); timerInterval = null; }
587
+ const t = getTimerSpan();
588
+ if (t) t.textContent = "";
589
+ }
590
+
591
+ function tick() {
592
+ const r = root();
593
+ if (isVisible(r)) start();
594
+ else stop();
595
+ }
596
+
597
+ // Observe rerenders / visibility changes
598
+ const obs = new MutationObserver(tick);
599
+ obs.observe(document.body, { subtree: true, childList: true, attributes: true });
600
 
601
+ window.addEventListener("load", tick);
602
+ setInterval(tick, 500);
603
+ '''
604
 
605
+ with gr.Blocks(theme=gr.themes.Soft(), title="SmartDoc AI") as demo:
606
  gr.Markdown("### SmartDoc AI - Document Q&A", elem_classes="app-title")
607
  gr.Markdown("Upload your documents and ask questions. Answers will appear below, just like a chat.", elem_classes="app-description")
608
  gr.Markdown("---")
 
891
  if is_hf_space:
892
  # Hugging Face Spaces configuration
893
  logger.info("Running on Hugging Face Spaces")
894
+ demo.launch(server_name="0.0.0.0", server_port=7860, js=js, css=css)
895
  else:
896
  # Local development configuration
897
  configured_port = int(os.environ.get("GRADIO_SERVER_PORT", "7860"))