Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -311,6 +311,7 @@ def FileSidebar():
|
|
| 311 |
if st.button('🔍Run'):
|
| 312 |
st.write("Running GPT logic placeholder...")
|
| 313 |
|
|
|
|
| 314 |
# ---------------------------
|
| 315 |
# Basic Scoring / Glossaries
|
| 316 |
# ---------------------------
|
|
@@ -380,6 +381,7 @@ def display_buttons_with_scores(num_columns_text):
|
|
| 380 |
newscore = update_score(key.replace('?',''))
|
| 381 |
st.markdown(f"Scored **{category} - {game} - {term}** -> {newscore}")
|
| 382 |
|
|
|
|
| 383 |
# --------------------
|
| 384 |
# Image & Video Grids
|
| 385 |
# --------------------
|
|
@@ -472,7 +474,7 @@ def display_content_or_image(query):
|
|
| 472 |
|
| 473 |
|
| 474 |
# ------------------------------------
|
| 475 |
-
# MERMAID DIAGRAM with Clickable
|
| 476 |
# ------------------------------------
|
| 477 |
def generate_mermaid_html(mermaid_code: str) -> str:
|
| 478 |
"""
|
|
@@ -517,10 +519,7 @@ def append_model_param(url: str, model_selected: bool) -> str:
|
|
| 517 |
return f"{url}{delimiter}model=1"
|
| 518 |
|
| 519 |
|
| 520 |
-
#
|
| 521 |
-
# click <nodeId> "<URL>" "_self"
|
| 522 |
-
# If you want edges to be clickable, you can label them as well,
|
| 523 |
-
# but Mermaid typically only has a 'click' property for nodes.
|
| 524 |
DEFAULT_MERMAID = """
|
| 525 |
flowchart LR
|
| 526 |
%% Notice we have "click LLM ..." lines:
|
|
@@ -536,13 +535,8 @@ flowchart LR
|
|
| 536 |
|
| 537 |
RE -- "Link 📡" --> KG((Knowledge Graph 📚\\nOntology+GAR+RAG))
|
| 538 |
click KG "/?q=Knowledge%20Graph%20Ontology+GAR+RAG" _self
|
| 539 |
-
|
| 540 |
-
%% If you want an "edge click" to pass ?r= something,
|
| 541 |
-
%% Mermaid doesn't have direct 'click' for edges,
|
| 542 |
-
%% but you can define them as nodes or use linkStyle trick, etc.
|
| 543 |
"""
|
| 544 |
|
| 545 |
-
|
| 546 |
# ---------------------------
|
| 547 |
# Streamlit Main App
|
| 548 |
# ---------------------------
|
|
@@ -550,7 +544,7 @@ def main():
|
|
| 550 |
st.set_page_config(page_title="Mermaid + Clickable Links Demo", layout="wide")
|
| 551 |
|
| 552 |
# 1) Parse query strings on page load
|
| 553 |
-
query_params = st.experimental_get_query_params()
|
| 554 |
current_q = query_params.get("q", [""])[0] # If present, first string
|
| 555 |
current_r = query_params.get("r", [""])[0]
|
| 556 |
|
|
@@ -559,30 +553,23 @@ def main():
|
|
| 559 |
model_selected = st.sidebar.checkbox("Append ?model=1 to each link?")
|
| 560 |
|
| 561 |
# 3) Generate a dynamic Mermaid code, appending model param if user wants
|
| 562 |
-
# We'll do a simple string replace to incorporate the model param
|
| 563 |
-
# For a robust approach, parse each URL carefully, then reassemble.
|
| 564 |
base_diagram = DEFAULT_MERMAID
|
| 565 |
lines = base_diagram.strip().split("\n")
|
| 566 |
new_lines = []
|
| 567 |
for line in lines:
|
| 568 |
if "click " in line and '"/?' in line:
|
| 569 |
# e.g. click LLM "/?q=LLM%20Agent" _self
|
| 570 |
-
# let's isolate the URL part
|
| 571 |
parts = re.split(r'click\s+\S+\s+"([^"]+)"\s+("_self")', line)
|
| 572 |
if len(parts) == 4:
|
| 573 |
-
# parts[0] = 'click LLM '
|
| 574 |
-
# parts[1] = '/?q=LLM%20Agent%20Extract%20Info'
|
| 575 |
-
# parts[2] = ' _self'
|
| 576 |
-
# parts[3] = '' (trailing possibly)
|
| 577 |
url = parts[1]
|
| 578 |
updated_url = append_model_param(url, model_selected)
|
| 579 |
-
# Recombine
|
| 580 |
new_line = f"{parts[0]}\"{updated_url}\" {parts[2]}"
|
| 581 |
new_lines.append(new_line)
|
| 582 |
else:
|
| 583 |
new_lines.append(line)
|
| 584 |
else:
|
| 585 |
new_lines.append(line)
|
|
|
|
| 586 |
mermaid_code = "\n".join(new_lines)
|
| 587 |
|
| 588 |
# 4) Render the top-centered Mermaid diagram
|
|
@@ -590,7 +577,7 @@ def main():
|
|
| 590 |
diagram_html = generate_mermaid_html(mermaid_code)
|
| 591 |
components.html(diagram_html, height=400, scrolling=True)
|
| 592 |
|
| 593 |
-
# 5) Show
|
| 594 |
if current_q:
|
| 595 |
st.markdown(f"**Detected Query**: `?q={current_q}`")
|
| 596 |
display_content_or_image(current_q)
|
|
@@ -623,7 +610,7 @@ def main():
|
|
| 623 |
st.session_state["markdown_text"] = ""
|
| 624 |
st.experimental_rerun()
|
| 625 |
|
| 626 |
-
#
|
| 627 |
st.markdown("---")
|
| 628 |
st.markdown("**Preview:**")
|
| 629 |
st.markdown(markdown_text)
|
|
@@ -640,10 +627,11 @@ def main():
|
|
| 640 |
value=st.session_state["current_mermaid"],
|
| 641 |
height=300
|
| 642 |
)
|
|
|
|
|
|
|
| 643 |
colC, colD = st.columns(2)
|
| 644 |
with colC:
|
| 645 |
if st.button("🎨 Refresh Diagram"):
|
| 646 |
-
# Rebuild the diagram
|
| 647 |
st.session_state["current_mermaid"] = mermaid_input
|
| 648 |
st.write("**Mermaid** diagram refreshed! 🌈")
|
| 649 |
st.experimental_rerun()
|
|
@@ -656,7 +644,7 @@ def main():
|
|
| 656 |
st.markdown("**Mermaid Source:**")
|
| 657 |
st.code(mermaid_input, language="python", line_numbers=True)
|
| 658 |
|
| 659 |
-
# 7)
|
| 660 |
st.markdown("---")
|
| 661 |
st.header("Media Galleries")
|
| 662 |
|
|
@@ -674,7 +662,7 @@ def main():
|
|
| 674 |
display_buttons_with_scores(num_columns_text)
|
| 675 |
st.markdown("Extended text interface is on...")
|
| 676 |
|
| 677 |
-
# 9)
|
| 678 |
FileSidebar()
|
| 679 |
|
| 680 |
# 10) Random Title at bottom
|
|
|
|
| 311 |
if st.button('🔍Run'):
|
| 312 |
st.write("Running GPT logic placeholder...")
|
| 313 |
|
| 314 |
+
|
| 315 |
# ---------------------------
|
| 316 |
# Basic Scoring / Glossaries
|
| 317 |
# ---------------------------
|
|
|
|
| 381 |
newscore = update_score(key.replace('?',''))
|
| 382 |
st.markdown(f"Scored **{category} - {game} - {term}** -> {newscore}")
|
| 383 |
|
| 384 |
+
|
| 385 |
# --------------------
|
| 386 |
# Image & Video Grids
|
| 387 |
# --------------------
|
|
|
|
| 474 |
|
| 475 |
|
| 476 |
# ------------------------------------
|
| 477 |
+
# MERMAID DIAGRAM with Clickable Nodes
|
| 478 |
# ------------------------------------
|
| 479 |
def generate_mermaid_html(mermaid_code: str) -> str:
|
| 480 |
"""
|
|
|
|
| 519 |
return f"{url}{delimiter}model=1"
|
| 520 |
|
| 521 |
|
| 522 |
+
# Default Mermaid diagram with "click" lines
|
|
|
|
|
|
|
|
|
|
| 523 |
DEFAULT_MERMAID = """
|
| 524 |
flowchart LR
|
| 525 |
%% Notice we have "click LLM ..." lines:
|
|
|
|
| 535 |
|
| 536 |
RE -- "Link 📡" --> KG((Knowledge Graph 📚\\nOntology+GAR+RAG))
|
| 537 |
click KG "/?q=Knowledge%20Graph%20Ontology+GAR+RAG" _self
|
|
|
|
|
|
|
|
|
|
|
|
|
| 538 |
"""
|
| 539 |
|
|
|
|
| 540 |
# ---------------------------
|
| 541 |
# Streamlit Main App
|
| 542 |
# ---------------------------
|
|
|
|
| 544 |
st.set_page_config(page_title="Mermaid + Clickable Links Demo", layout="wide")
|
| 545 |
|
| 546 |
# 1) Parse query strings on page load
|
| 547 |
+
query_params = st.experimental_get_query_params() # original usage
|
| 548 |
current_q = query_params.get("q", [""])[0] # If present, first string
|
| 549 |
current_r = query_params.get("r", [""])[0]
|
| 550 |
|
|
|
|
| 553 |
model_selected = st.sidebar.checkbox("Append ?model=1 to each link?")
|
| 554 |
|
| 555 |
# 3) Generate a dynamic Mermaid code, appending model param if user wants
|
|
|
|
|
|
|
| 556 |
base_diagram = DEFAULT_MERMAID
|
| 557 |
lines = base_diagram.strip().split("\n")
|
| 558 |
new_lines = []
|
| 559 |
for line in lines:
|
| 560 |
if "click " in line and '"/?' in line:
|
| 561 |
# e.g. click LLM "/?q=LLM%20Agent" _self
|
|
|
|
| 562 |
parts = re.split(r'click\s+\S+\s+"([^"]+)"\s+("_self")', line)
|
| 563 |
if len(parts) == 4:
|
|
|
|
|
|
|
|
|
|
|
|
|
| 564 |
url = parts[1]
|
| 565 |
updated_url = append_model_param(url, model_selected)
|
|
|
|
| 566 |
new_line = f"{parts[0]}\"{updated_url}\" {parts[2]}"
|
| 567 |
new_lines.append(new_line)
|
| 568 |
else:
|
| 569 |
new_lines.append(line)
|
| 570 |
else:
|
| 571 |
new_lines.append(line)
|
| 572 |
+
|
| 573 |
mermaid_code = "\n".join(new_lines)
|
| 574 |
|
| 575 |
# 4) Render the top-centered Mermaid diagram
|
|
|
|
| 577 |
diagram_html = generate_mermaid_html(mermaid_code)
|
| 578 |
components.html(diagram_html, height=400, scrolling=True)
|
| 579 |
|
| 580 |
+
# 5) Show inbound ?q / ?r
|
| 581 |
if current_q:
|
| 582 |
st.markdown(f"**Detected Query**: `?q={current_q}`")
|
| 583 |
display_content_or_image(current_q)
|
|
|
|
| 610 |
st.session_state["markdown_text"] = ""
|
| 611 |
st.experimental_rerun()
|
| 612 |
|
| 613 |
+
# Show the rendered Markdown below
|
| 614 |
st.markdown("---")
|
| 615 |
st.markdown("**Preview:**")
|
| 616 |
st.markdown(markdown_text)
|
|
|
|
| 627 |
value=st.session_state["current_mermaid"],
|
| 628 |
height=300
|
| 629 |
)
|
| 630 |
+
|
| 631 |
+
# A small button bar
|
| 632 |
colC, colD = st.columns(2)
|
| 633 |
with colC:
|
| 634 |
if st.button("🎨 Refresh Diagram"):
|
|
|
|
| 635 |
st.session_state["current_mermaid"] = mermaid_input
|
| 636 |
st.write("**Mermaid** diagram refreshed! 🌈")
|
| 637 |
st.experimental_rerun()
|
|
|
|
| 644 |
st.markdown("**Mermaid Source:**")
|
| 645 |
st.code(mermaid_input, language="python", line_numbers=True)
|
| 646 |
|
| 647 |
+
# 7) Sliders & image/video galleries
|
| 648 |
st.markdown("---")
|
| 649 |
st.header("Media Galleries")
|
| 650 |
|
|
|
|
| 662 |
display_buttons_with_scores(num_columns_text)
|
| 663 |
st.markdown("Extended text interface is on...")
|
| 664 |
|
| 665 |
+
# 9) File Sidebar
|
| 666 |
FileSidebar()
|
| 667 |
|
| 668 |
# 10) Random Title at bottom
|