Skip to content

Commit 9212a76

Browse files
committed
Group by: Restore aggregations if removed due to open context
1 parent d6c3792 commit 9212a76

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

Orange/widgets/data/owgroupby.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,9 +443,14 @@ def set_data(self, data: Table) -> None:
443443
if data
444444
else {}
445445
)
446+
default_aggregations = self.aggregations.copy()
446447

447448
self.openContext(self.data)
448449

450+
# restore aggregations
451+
self.aggregations.update({k: v for k, v in default_aggregations.items()
452+
if k not in self.aggregations})
453+
449454
# update selections in widgets and re-plot
450455
self.agg_table_model.set_domain(data.domain if data else None)
451456
self._set_gb_selection()

Orange/widgets/data/tests/test_owgroupby.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from Orange.widgets.tests.base import WidgetTest
2121

2222

23-
class TestOWGropBy(WidgetTest):
23+
class TestOWGroupBy(WidgetTest):
2424
def setUp(self) -> None:
2525
self.widget = self.create_widget(OWGroupBy)
2626
self.iris = Table("iris")
@@ -46,6 +46,14 @@ def test_data(self):
4646
self.send_signal(self.widget.Inputs.data, None)
4747
self.assertIsNone(self.get_output(self.widget.Outputs.data))
4848

49+
def test_data_domain_changed(self):
50+
self.send_signal(self.widget.Inputs.data, self.iris[:, -2:])
51+
self.assert_aggregations_equal(["Mean", "Concatenate"])
52+
53+
self.send_signal(self.widget.Inputs.data, self.iris[:, -3:])
54+
self.assert_aggregations_equal(["Mean", "Mean", "Concatenate"])
55+
self.select_table_rows(self.widget.agg_table_view, [0])
56+
4957
@staticmethod
5058
def _set_selection(view: QListView, indices: List[int]):
5159
view.clearSelection()

0 commit comments

Comments
 (0)