Commit 76c92ec7 authored by Duggan, John's avatar Duggan, John
Browse files

Fix updates on experiment/subdirectory bindings

parent 5607ab47
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -237,6 +237,7 @@ class DataSelector(datagrid.VGrid):
    def set_subdirectory(self, subdirectory_path: str = "") -> None:
        set_state_param(self.state, self._subdirectory, subdirectory_path)
        self._vm.set_subdirectory(subdirectory_path)
        self._reset_rv_grid()

    def set_state(self, *args: Any, **kwargs: Any) -> None:
        raise TypeError(
+8 −0
Original line number Diff line number Diff line
@@ -209,6 +209,10 @@ class NeutronDataSelector(DataSelector):
                experiment = rgetdictvalue(kwargs, self._experiment[0])
                if experiment != self._last_experiment:
                    self._last_experiment = experiment
                    # See the note in the update_experiment method for why we call this twice.
                    self._vm.set_binding_parameters(
                        experiment=set_state_param(self.state, (self._selected_experiment_name,), ""),
                    )
                    self._vm.set_binding_parameters(
                        experiment=set_state_param(self.state, (self._selected_experiment_name,), experiment)
                    )
@@ -244,6 +248,10 @@ class NeutronDataSelector(DataSelector):
        self._vm.reset()

    def update_experiment(self, experiment: str) -> None:
        # Setting the experiment to an empty string forces the treeview to clear it's selection state.
        self._vm.set_binding_parameters(
            experiment=set_state_param(self.state, (self._selected_experiment_name,), ""),
        )
        self._vm.set_binding_parameters(
            experiment=set_state_param(self.state, (self._selected_experiment_name,), experiment),
        )
+19 −8
Original line number Diff line number Diff line
@@ -22,23 +22,34 @@ class RevoGrid {
            return
        }

        let allSelected = null
        rowCheckboxes.forEach((element) => {
            const input = element.querySelector('input')

            const rowIndex = element.dataset.rgrow
            if (availableData[rowIndex] !== undefined) {
                input.checked = modelValue.includes(availableData[rowIndex].path)
            } else {
                input.checked = false
            }

            if (allSelected === null && input.checked) {
                allSelected = true
            } else if (!input.checked) {
                allSelected = false
            }
        })

        if (modelValue.length === 0) {
            selectAllCheckbox.checked = false
            selectAllCheckbox.indeterminate = false
        } else if (modelValue.length === availableData.length) {
        } else if (allSelected === true) {
            selectAllCheckbox.checked = true
            selectAllCheckbox.indeterminate = false
        } else {
            selectAllCheckbox.checked = false
            selectAllCheckbox.indeterminate = true
        }

        rowCheckboxes.forEach((element) => {
            const input = element.querySelector('input')

            const rowIndex = element.dataset.rgrow
            input.checked = modelValue.includes(availableData[rowIndex].path)
        })
    }

    cellTemplate(createElement, props) {
+2 −0
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ class NeutronDataSelectorViewModel(DataSelectorViewModel):
        self.model.set_subdirectory("")
        self.directories = self.model.get_directories()
        self.expanded = {}

        self.update_view()
        self.reset_bind.update_in_view(None)

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