From 083b046976365c3e222a83bb298bc1f2b755fb57 Mon Sep 17 00:00:00 2001 From: Alessandro Genova Date: Tue, 21 Nov 2023 10:52:48 -0500 Subject: [PATCH] fix(jupyter): Iframe builders return a dict instead of a str --- trame_client/ui/core.py | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/trame_client/ui/core.py b/trame_client/ui/core.py index 670e32c..100bf22 100644 --- a/trame_client/ui/core.py +++ b/trame_client/ui/core.py @@ -24,7 +24,13 @@ def iframe_url_builder_default(layout): template_name = layout._template_name src = f"{base_url}:{server.port}/index.html?ui={template_name[16:]}&reconnect=auto" elem_id = f"{server.name}_{template_name}" - return f'' + + return { + "id": elem_id, + "src": src, + "style": layout.iframe_style, + **layout.iframe_attrs, + } def iframe_url_builder_serverproxy(layout): @@ -33,7 +39,13 @@ def iframe_url_builder_serverproxy(layout): template_name = layout._template_name src = f"{base_url}/{server.port}/index.html?ui={template_name[16:]}&reconnect=auto" elem_id = f"{server.name}_{template_name}" - return f'' + + return { + "id": elem_id, + "src": src, + "style": layout.iframe_style, + **layout.iframe_attrs, + } def iframe_url_builder_jupyter_extension(layout): @@ -57,7 +69,13 @@ def iframe_url_builder_jupyter_extension(layout): dst_dir = server_www / sub_path shutil.copytree(src_dir, dst_dir, dirs_exist_ok=True) - return f'' + return { + "id": elem_id, + "src": src, + "style": layout.iframe_style, + "data-kernel-id": get_kernel_id(), + **layout.iframe_attrs, + } def iframe_url_builder_jupyter_hub(layout): @@ -65,7 +83,13 @@ def iframe_url_builder_jupyter_hub(layout): template_name = layout._template_name src = f"{os.environ['JUPYTERHUB_SERVICE_PREFIX']}/proxy/{server.port}/index.html?ui={template_name[16:]}&reconnect=auto" elem_id = f"{server.name}_{template_name}" - return f'' + + return { + "id": elem_id, + "src": src, + "style": layout.iframe_style, + **layout.iframe_attrs, + } def get_iframe_builder(name="default"): @@ -115,6 +139,7 @@ def __init__( self._template_name = f"trame__template_{template_name}" self._server.state[self._template_name] = "" self.iframe_style = f"border: none; width: {width}{css_unit(width)}; height: {height}{css_unit(height)};" + self.iframe_attrs = {} self.iframe_base_url = base_url self._iframe_builder = get_iframe_builder(iframe_builder) @@ -213,7 +238,12 @@ def _jupyter_content(self):
await layout.ready
""" - return self.iframe_builder(self) + attributes = self.iframe_builder(self) + attributes_str = " ".join( + f'{key}="{str(value)}"' for key, value in attributes.items() + ) + + return f"" @property def ipywidget(self):