I can save and load Datagrid content
This commit is contained in:
@@ -12,7 +12,7 @@ from myfasthtml.core.instances import MultipleInstance
|
||||
|
||||
class DatagridState(DbObject):
|
||||
def __init__(self, owner):
|
||||
super().__init__(owner)
|
||||
super().__init__(owner, name=f"{owner.get_full_id()}-state")
|
||||
with self.initializing():
|
||||
self.sidebar_visible: bool = False
|
||||
self.selected_view: str = None
|
||||
@@ -25,12 +25,12 @@ class DatagridState(DbObject):
|
||||
self.filtered: dict = {}
|
||||
self.edition: DatagridEditionState = DatagridEditionState()
|
||||
self.selection: DatagridSelectionState = DatagridSelectionState()
|
||||
self.html = None
|
||||
self.ne_data = None
|
||||
|
||||
|
||||
class DatagridSettings(DbObject):
|
||||
def __init__(self, owner):
|
||||
super().__init__(owner)
|
||||
super().__init__(owner, name=f"{owner.get_full_id()}-settings")
|
||||
with self.initializing():
|
||||
self.file_name: Optional[str] = None
|
||||
self.selected_sheet_name: Optional[str] = None
|
||||
@@ -52,12 +52,13 @@ class DataGrid(MultipleInstance):
|
||||
self._state = DatagridState(self)
|
||||
self.commands = Commands(self)
|
||||
|
||||
def set_html(self, html):
|
||||
self._state.html = html
|
||||
def init_from_dataframe(self, df):
|
||||
self._state.ne_data = df
|
||||
|
||||
def render(self):
|
||||
html = self._state.ne_data.to_html(index=False) if self._state.ne_data is not None else "Content lost !"
|
||||
return Div(
|
||||
NotStr(self._state.html) if self._state.html else "Content lost !",
|
||||
NotStr(html),
|
||||
id=self._id
|
||||
)
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ class DocumentDefinition:
|
||||
document_id: str
|
||||
namespace: str
|
||||
name: str
|
||||
type: str
|
||||
type: str # table, card,
|
||||
tab_id: str
|
||||
datagrid_id: str
|
||||
|
||||
@@ -32,7 +32,7 @@ class DataGridsState(DbObject):
|
||||
def __init__(self, owner, name=None):
|
||||
super().__init__(owner, name=name)
|
||||
with self.initializing():
|
||||
self.elements: list = [DocumentDefinition]
|
||||
self.elements: list[DocumentDefinition] = []
|
||||
|
||||
|
||||
class Commands(BaseCommands):
|
||||
@@ -91,9 +91,8 @@ class DataGridsManager(MultipleInstance):
|
||||
def open_from_excel(self, tab_id, file_upload: FileUpload):
|
||||
excel_content = file_upload.get_content()
|
||||
df = pd.read_excel(excel_content, file_upload.get_sheet_name())
|
||||
html = df.to_html(index=False)
|
||||
dg = DataGrid(self._tabs_manager)
|
||||
dg.set_html(html)
|
||||
dg.init_from_dataframe(df)
|
||||
document = DocumentDefinition(
|
||||
document_id=str(uuid.uuid4()),
|
||||
namespace=file_upload.get_file_basename(),
|
||||
|
||||
Reference in New Issue
Block a user