Skip to content

Commit 972cc2c

Browse files
committed
Data info displayed in the status bar
1 parent 9541a29 commit 972cc2c

File tree

2 files changed

+43
-3
lines changed

2 files changed

+43
-3
lines changed

Orange/widgets/data/owpivot.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from Orange.widgets.utils.sql import check_sql_input
2626
from Orange.widgets.utils.itemmodels import DomainModel
2727
from Orange.widgets.utils.widgetpreview import WidgetPreview
28+
from Orange.widgets.utils.state_summary import format_summary_details
2829
from Orange.widgets.widget import OWWidget, Input, Output, Msg
2930

3031

@@ -711,6 +712,9 @@ def _add_control_area_controls(self):
711712
gui.rubber(self.controlArea)
712713
gui.auto_apply(self.controlArea, self, "auto_commit")
713714

715+
self.info.set_input_summary(self.info.NoInput)
716+
self.info.set_output_summary(self.info.NoOutput)
717+
714718
def __add_aggregation_controls(self):
715719
box = gui.vBox(self.controlArea, "Aggregations")
716720
for agg in self.AGGREGATIONS:
@@ -790,6 +794,10 @@ def check_data(self):
790794
self.clear_messages()
791795
if not self.data:
792796
self.table_view.clear()
797+
self.info.set_input_summary(self.info.NoInput)
798+
else:
799+
self.info.set_input_summary(len(self.data),
800+
format_summary_details(self.data))
793801

794802
def init_attr_values(self):
795803
domain = self.data.domain if self.data and len(self.data) else None
@@ -821,6 +829,11 @@ def commit(self):
821829
self.Outputs.pivot_table.send(self.pivot.pivot_table)
822830
self.Outputs.filtered_data.send(self.get_filtered_data())
823831

832+
output = self.get_filtered_data()
833+
summary = len(output) if output else self.info.NoOutput
834+
details = format_summary_details(output) if output else ""
835+
self.info.set_output_summary(summary, details)
836+
824837
def _update_graph(self):
825838
self.table_view.clear()
826839
if self.pivot.pivot_table:

Orange/widgets/data/tests/test_owpivot.py

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Test methods with long descriptive names can omit docstrings
2-
# pylint: disable=missing-docstring
2+
# pylint: disable=missing-docstring,unsubscriptable-object
33
import unittest
4-
from unittest.mock import patch
4+
from unittest.mock import patch, Mock
55
from pickle import loads, dumps
66

77
import numpy as np
@@ -16,7 +16,7 @@
1616
AggregationFunctionsEnum)
1717
from Orange.widgets.tests.base import WidgetTest
1818
from Orange.widgets.tests.utils import simulate
19-
19+
from Orange.widgets.utils.state_summary import format_summary_details
2020

2121
class TestOWPivot(WidgetTest):
2222
def setUp(self):
@@ -232,6 +232,33 @@ def test_send_report(self):
232232
self.send_signal(self.widget.Inputs.data, None)
233233
self.widget.report_button.click()
234234

235+
def test_summary(self):
236+
"""Check if the status bar is updated when data is received"""
237+
data = self.iris
238+
input_sum = self.widget.info.set_input_summary = Mock()
239+
output_sum = self.widget.info.set_output_summary = Mock()
240+
241+
self.send_signal(self.widget.Inputs.data, data)
242+
input_sum.assert_called_with(len(data), format_summary_details(data))
243+
output = self.get_output(self.widget.Outputs.filtered_data)
244+
self.assertIsNone(output)
245+
simulate.combobox_activate_item(self.widget.controls.row_feature,
246+
self.iris.domain.attributes[0].name)
247+
simulate.combobox_activate_item(self.widget.controls.col_feature,
248+
self.iris.domain.class_var.name)
249+
self.widget.table_view.set_selection(set([(11, 0), (11, 1), (12, 0)]))
250+
self.widget.table_view.selection_changed.emit()
251+
output = self.get_output(self.widget.Outputs.filtered_data)
252+
output_sum.assert_called_with(len(output),
253+
format_summary_details(output))
254+
input_sum.reset_mock()
255+
output_sum.reset_mock()
256+
self.send_signal(self.widget.Inputs.data, None)
257+
input_sum.assert_called_once()
258+
self.assertEqual(input_sum.call_args[0][0].brief, "")
259+
output_sum.assert_called_once()
260+
self.assertEqual(output_sum.call_args[0][0].brief, "")
261+
235262

236263
class TestAggregationFunctionsEnum(unittest.TestCase):
237264
def test_pickle(self):

0 commit comments

Comments
 (0)