I can open an excel file and see its content

This commit is contained in:
2025-12-07 17:46:39 +01:00
parent fde2e85c92
commit dc5ec450f0
5 changed files with 100 additions and 21 deletions

View File

@@ -164,13 +164,14 @@ class TabsManager(MultipleInstance):
self._add_or_update_tab(tab_id, label, component, activate)
return tab_id
def show_tab(self, tab_id, activate: bool = True, oob=True):
def show_tab(self, tab_id, activate: bool = True, oob=True, is_new=True):
"""
Send the tab to the client if needed.
If the tab was already sent, just update the active tab.
:param tab_id:
:param activate:
:param oob: default=True so other control will not care of the target
:param is_new: is it a new tab or an existing one?
:return:
"""
logger.debug(f"show_tab {tab_id=}")
@@ -190,7 +191,9 @@ class TabsManager(MultipleInstance):
logger.debug(f" Content not in client memory. Sending it.")
self._state.ns_tabs_sent_to_client.add(tab_id)
tab_content = self._mk_tab_content(tab_id, content)
return self._mk_tabs_controller(oob), self._mk_tabs_header_wrapper(), self._wrap_tab_content(tab_content)
return (self._mk_tabs_controller(oob),
self._mk_tabs_header_wrapper(),
self._wrap_tab_content(tab_content, is_new))
else:
logger.debug(f" Content already in client memory. Just switch.")
return self._mk_tabs_controller(oob) # no new tab_id => header is already up to date
@@ -204,7 +207,7 @@ class TabsManager(MultipleInstance):
self._add_or_update_tab(tab_id, label, component, activate)
self._state.ns_tabs_sent_to_client.discard(tab_id) # to make sure that the new content will be sent to the client
return self.show_tab(tab_id, activate=activate, oob=True)
return self.show_tab(tab_id, activate=activate, oob=True, is_new=False)
def close_tab(self, tab_id: str):
"""
@@ -359,11 +362,15 @@ class TabsManager(MultipleInstance):
cls="dropdown dropdown-end"
)
def _wrap_tab_content(self, tab_content):
return Div(
tab_content,
hx_swap_oob=f"beforeend:#{self._id}-content-wrapper",
)
def _wrap_tab_content(self, tab_content, is_new=True):
if is_new:
return Div(
tab_content,
hx_swap_oob=f"beforeend:#{self._id}-content-wrapper"
)
else:
tab_content.attrs["hx-swap-oob"] = "outerHTML"
return tab_content
def _tab_already_exists(self, label, component):
if not isinstance(component, BaseInstance):