Loading src/nova/trame/view/components/data_selector.py +1 −0 Original line number Diff line number Diff line Loading @@ -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( Loading src/nova/trame/view/components/ornl/neutron_data_selector.py +8 −0 Original line number Diff line number Diff line Loading @@ -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) ) Loading Loading @@ -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), ) Loading src/nova/trame/view/theme/assets/js/revo_grid.js +19 −8 Original line number Diff line number Diff line Loading @@ -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) { Loading src/nova/trame/view_model/ornl/neutron_data_selector.py +2 −0 Original line number Diff line number Diff line Loading @@ -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: Loading Loading
src/nova/trame/view/components/data_selector.py +1 −0 Original line number Diff line number Diff line Loading @@ -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( Loading
src/nova/trame/view/components/ornl/neutron_data_selector.py +8 −0 Original line number Diff line number Diff line Loading @@ -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) ) Loading Loading @@ -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), ) Loading
src/nova/trame/view/theme/assets/js/revo_grid.js +19 −8 Original line number Diff line number Diff line Loading @@ -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) { Loading
src/nova/trame/view_model/ornl/neutron_data_selector.py +2 −0 Original line number Diff line number Diff line Loading @@ -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: Loading