Loading src/nova/trame/view/components/data_selector.py +37 −20 Original line number Diff line number Diff line """View Implementation for DataSelector.""" from asyncio import ensure_future, sleep from typing import Any, List, Optional, cast from warnings import warn Loading @@ -9,7 +10,7 @@ from trame.widgets import vuetify3 as vuetify from nova.mvvm.trame_binding import TrameBinding from nova.trame.model.data_selector import CUSTOM_DIRECTORIES_LABEL, DataSelectorModel from nova.trame.view.layouts import GridLayout, VBoxLayout from nova.trame.view.layouts import GridLayout, HBoxLayout, VBoxLayout from nova.trame.view_model.data_selector import DataSelectorViewModel from .input_field import InputField Loading @@ -20,6 +21,8 @@ vuetify.enable_lab() class DataSelector(datagrid.VGrid): """Allows the user to select datafiles from an IPTS experiment.""" REFRESH_RATE = 30 def __init__( self, v_model: str, Loading Loading @@ -98,9 +101,12 @@ class DataSelector(datagrid.VGrid): self.create_ui(facility, instrument, **kwargs) ensure_future(self._refresh_loop()) def create_ui(self, facility: str, instrument: str, **kwargs: Any) -> None: with VBoxLayout(classes="nova-data-selector", height="100%"): with GridLayout(columns=3): with HBoxLayout(valign="center"): with GridLayout(classes="flex-1-1", columns=3): columns = 3 if facility == "": columns -= 1 Loading @@ -123,6 +129,11 @@ class DataSelector(datagrid.VGrid): type="autocomplete", ) InputField(v_else=True, v_model=f"{self._state_name}.custom_directory", column_span=2) with vuetify.VBtn( classes="mx-1", density="compact", icon=True, variant="text", click=self.refresh_file_list ): vuetify.VIcon("mdi-refresh") vuetify.VTooltip("Refresh file list", activator="parent") with GridLayout(columns=2, classes="flex-1-0 h-0", valign="start"): if not self._prefix: Loading Loading @@ -248,3 +259,9 @@ class DataSelector(datagrid.VGrid): None """ self._vm.set_state(facility, instrument, experiment) async def _refresh_loop(self) -> None: while True: await sleep(self.REFRESH_RATE) self.refresh_file_list() self.state.dirty(self._datafiles_name) Loading
src/nova/trame/view/components/data_selector.py +37 −20 Original line number Diff line number Diff line """View Implementation for DataSelector.""" from asyncio import ensure_future, sleep from typing import Any, List, Optional, cast from warnings import warn Loading @@ -9,7 +10,7 @@ from trame.widgets import vuetify3 as vuetify from nova.mvvm.trame_binding import TrameBinding from nova.trame.model.data_selector import CUSTOM_DIRECTORIES_LABEL, DataSelectorModel from nova.trame.view.layouts import GridLayout, VBoxLayout from nova.trame.view.layouts import GridLayout, HBoxLayout, VBoxLayout from nova.trame.view_model.data_selector import DataSelectorViewModel from .input_field import InputField Loading @@ -20,6 +21,8 @@ vuetify.enable_lab() class DataSelector(datagrid.VGrid): """Allows the user to select datafiles from an IPTS experiment.""" REFRESH_RATE = 30 def __init__( self, v_model: str, Loading Loading @@ -98,9 +101,12 @@ class DataSelector(datagrid.VGrid): self.create_ui(facility, instrument, **kwargs) ensure_future(self._refresh_loop()) def create_ui(self, facility: str, instrument: str, **kwargs: Any) -> None: with VBoxLayout(classes="nova-data-selector", height="100%"): with GridLayout(columns=3): with HBoxLayout(valign="center"): with GridLayout(classes="flex-1-1", columns=3): columns = 3 if facility == "": columns -= 1 Loading @@ -123,6 +129,11 @@ class DataSelector(datagrid.VGrid): type="autocomplete", ) InputField(v_else=True, v_model=f"{self._state_name}.custom_directory", column_span=2) with vuetify.VBtn( classes="mx-1", density="compact", icon=True, variant="text", click=self.refresh_file_list ): vuetify.VIcon("mdi-refresh") vuetify.VTooltip("Refresh file list", activator="parent") with GridLayout(columns=2, classes="flex-1-0 h-0", valign="start"): if not self._prefix: Loading Loading @@ -248,3 +259,9 @@ class DataSelector(datagrid.VGrid): None """ self._vm.set_state(facility, instrument, experiment) async def _refresh_loop(self) -> None: while True: await sleep(self.REFRESH_RATE) self.refresh_file_list() self.state.dirty(self._datafiles_name)