Commit ccab970c authored by Duggan, John's avatar Duggan, John
Browse files

Allow directory list to be updated during refresh

parent 00a6e872
Loading
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -101,10 +101,10 @@ class DataSelector(datagrid.VGrid):
            with HBoxLayout(valign="center"):
                self._layout.filter = html.Div(classes="flex-1-1")
                with vuetify.VBtn(
                    classes="mx-1", density="compact", icon=True, variant="text", click=self.refresh_file_list
                    classes="mx-1", density="compact", icon=True, variant="text", click=self.refresh_contents
                ):
                    vuetify.VIcon("mdi-refresh")
                    vuetify.VTooltip("Refresh file list", activator="parent")
                    vuetify.VTooltip("Refresh Contents", activator="parent")

            with GridLayout(columns=2, classes="flex-1-0 h-0", valign="start"):
                if not self._prefix:
@@ -196,8 +196,8 @@ class DataSelector(datagrid.VGrid):

        self._vm.update_view()

    def refresh_file_list(self) -> None:
        self._vm.update_view()
    def refresh_contents(self) -> None:
        self._vm.update_view(refresh_directories=True)

    def reset(self, _: Any = None) -> None:
        self._reset_state()
@@ -212,5 +212,6 @@ class DataSelector(datagrid.VGrid):
    async def _refresh_loop(self) -> None:
        while True:
            await sleep(self.REFRESH_RATE)
            self.refresh_file_list()

            self.refresh_contents()
            self.state.dirty(self._datafiles_name)
+12 −4
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@ class DataSelectorViewModel:

        self.datafiles: List[Dict[str, Any]] = []
        self.directories: List[Dict[str, Any]] = []
        self.expanded: List[str] = []
        self.expanded: Dict[str, List[str]] = {}

        self.state_bind = binding.new_bind(self.model.state, callback_after_update=self.on_state_updated)
        self.directories_bind = binding.new_bind()
@@ -44,9 +44,16 @@ class DataSelectorViewModel:
        current_level["children"] = new_directories

        # Mark this directory as expanded and display the new content
        self.expanded.append(paths[-1])
        self.expanded[paths[-1]] = paths
        self.directories_bind.update_in_view(self.directories)

    def reexpand_directories(self) -> None:
        paths_to_expand = self.expanded.values()
        self.expanded = {}

        for paths in paths_to_expand:
            self.expand_directory(paths)

    def on_state_updated(self, results: Dict[str, Any]) -> None:
        pass

@@ -54,10 +61,11 @@ class DataSelectorViewModel:
        self.model.set_subdirectory(subdirectory_path)
        self.update_view()

    def update_view(self) -> None:
    def update_view(self, refresh_directories: bool = False) -> None:
        self.state_bind.update_in_view(self.model.state)
        if not self.directories:
        if not self.directories or refresh_directories:
            self.directories = self.model.get_directories()
            self.reexpand_directories()
        self.directories_bind.update_in_view(self.directories)

        self.datafiles = [
+2 −2
Original line number Diff line number Diff line
@@ -43,9 +43,9 @@ class NeutronDataSelectorViewModel(DataSelectorViewModel):
                    self.reset()
        self.update_view()

    def update_view(self) -> None:
    def update_view(self, refresh_directories: bool = False) -> None:
        self.facilities_bind.update_in_view(self.model.get_facilities())
        self.instruments_bind.update_in_view(self.model.get_instruments())
        self.experiments_bind.update_in_view(self.model.get_experiments())

        super().update_view()
        super().update_view(refresh_directories)