DatagridsManager : I can see the opened folders in the Treeview

This commit is contained in:
2025-12-07 20:57:20 +01:00
parent dc5ec450f0
commit 3aa36a91aa
7 changed files with 323 additions and 24 deletions

View File

@@ -33,8 +33,11 @@ class Commands(BaseCommands):
def __init__(self, owner):
super().__init__(owner)
def upload_file(self):
def on_file_uploaded(self):
return Command("UploadFile", "Upload file", self._owner.upload_file).htmx(target=f"#sn_{self._id}")
def on_sheet_selected(self):
return Command("SheetSelected", "Sheet selected", self._owner.select_sheet).htmx(target=f"#sn_{self._id}")
class FileUpload(MultipleInstance):
@@ -66,6 +69,11 @@ class FileUpload(MultipleInstance):
return self.mk_sheet_selector()
def select_sheet(self, sheet_name: str):
logger.debug(f"select_sheet: {sheet_name=}")
self._state.ns_selected_sheet_name = sheet_name
return self.mk_sheet_selector()
def mk_sheet_selector(self):
options = [Option("Choose a file...", selected=True, disabled=True)] if self._state.ns_sheets_names is None else \
[Option(
@@ -73,12 +81,12 @@ class FileUpload(MultipleInstance):
selected=True if name == self._state.ns_selected_sheet_name else None,
) for name in self._state.ns_sheets_names]
return Select(
return mk.mk(Select(
*options,
name="sheet_name",
id=f"sn_{self._id}", # sn stands for 'sheet name'
cls="select select-bordered select-sm w-full ml-2"
)
), command=self.commands.on_sheet_selected())
def get_content(self):
return self._state.ns_file_content
@@ -86,6 +94,15 @@ class FileUpload(MultipleInstance):
def get_file_name(self):
return self._state.ns_file_name
def get_file_basename(self):
if self._state.ns_file_name is None:
return None
return self._state.ns_file_name.split(".")[0]
def get_sheet_name(self):
return self._state.ns_selected_sheet_name
@staticmethod
def get_sheets_names(file_content):
try:
@@ -108,7 +125,7 @@ class FileUpload(MultipleInstance):
hx_encoding='multipart/form-data',
cls="file-input file-input-bordered file-input-sm w-full",
),
command=self.commands.upload_file()
command=self.commands.on_file_uploaded()
),
self.mk_sheet_selector(),
cls="flex"