Skip to content

Commit 0e91f3a

Browse files
Merge pull request #112 from MarcSkovMadsen/enhancement/delete-button
delete button
2 parents afa21e0 + 75a1651 commit 0e91f3a

1 file changed

Lines changed: 34 additions & 2 deletions

File tree

src/holoviz_mcp/display_mcp/pages/feed_page.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ def feed_page():
2222
# Create chat feed
2323
chat_feed = pn.Column(sizing_mode="stretch_both")
2424

25+
def on_delete(snippet_id):
26+
"""Handle deletion of a visualization."""
27+
# Delete from database
28+
get_db().delete_snippet(snippet_id)
29+
# Remove from cache
30+
if snippet_id in pn.state.cache["views"]:
31+
del pn.state.cache["views"][snippet_id]
32+
# Refresh feed
33+
update_chat()
34+
2535
def get_view(req):
2636
"""Create view for a single visualization in the feed."""
2737
if req.id in pn.state.cache["views"]:
@@ -35,7 +45,7 @@ def get_view(req):
3545
title = f"""\
3646
**{req.name or req.id}** ({created_at})\n\n{req.description}\n
3747
"""
38-
iframe = f"""<div style="resize: vertical; overflow: hidden; height: calc(75vh - 200px); width: 100%; max-width: 100%; border: 1px solid gray;">
48+
iframe = f"""<div style="resize: vertical; overflow: hidden; height: calc(75vh - 300px); width: 100%; max-width: 100%; border: 1px solid gray;">
3949
<iframe src="{url}" style="height: 100%; width: 100%; border: none;" frameborder="0"></iframe>
4050
</div>"""
4151
# Create copy button with JavaScript callback
@@ -66,9 +76,31 @@ def get_view(req):
6676
""",
6777
)
6878

79+
delete_button = pn.widgets.Button(
80+
name="🗑️ Delete",
81+
button_type="danger",
82+
width=120,
83+
description="Delete this visualization",
84+
)
85+
delete_button.on_click(lambda event: on_delete(req.id))
86+
6987
with pn.config.set(sizing_mode="stretch_width"):
7088
message = pn.Column(
71-
pn.pane.Markdown(title), pn.pane.Markdown(iframe), pn.Row(pn.HSpacer(), open_button, copy_button, margin=(0, 10, 0, 10), align="end")
89+
pn.pane.Markdown(
90+
title,
91+
margin=(10, 10, 0, 10),
92+
),
93+
pn.Tabs(
94+
pn.pane.Markdown(iframe, name="View"),
95+
pn.widgets.CodeEditor(
96+
value=req.app,
97+
name="Code",
98+
language="python",
99+
theme="github_dark",
100+
),
101+
margin=(0, 10, 10, 10),
102+
),
103+
pn.Row(pn.HSpacer(), open_button, copy_button, delete_button, margin=(0, 10, 0, 10), align="end"),
72104
)
73105

74106
pn.state.cache["views"][req.id] = message

0 commit comments

Comments
 (0)