Skip to content

Commit 812208c

Browse files
committed
OWBoxPlot: data info displayed in the status bar
1 parent 3f4c786 commit 812208c

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

Orange/widgets/visualize/owboxplot.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from Orange.widgets.utils.annotated_data import (create_annotated_table,
2525
ANNOTATED_DATA_SIGNAL_NAME)
2626
from Orange.widgets.utils.widgetpreview import WidgetPreview
27+
from Orange.widgets.utils.state_summary import format_summary_details
2728
from Orange.widgets.widget import Input, Output
2829

2930

@@ -277,6 +278,9 @@ def __init__(self):
277278
self.stat_test = ""
278279
self.mainArea.setMinimumWidth(300)
279280

281+
self.info.set_input_summary(self.info.NoInput)
282+
self.info.set_output_summary(self.info.NoOutput)
283+
280284
self.stats = self.dist = self.conts = []
281285
self.is_continuous = False
282286

@@ -329,8 +333,11 @@ def set_data(self, dataset):
329333
self.openContext(self.dataset)
330334
self.grouping_changed()
331335
self.attr_changed()
336+
self.info.set_input_summary(len(dataset),
337+
format_summary_details(dataset))
332338
else:
333339
self.reset_all_data()
340+
self.info.set_input_summary(self.info.NoInput)
334341
self.commit()
335342

336343
def select_default_variables(self):
@@ -1109,6 +1116,10 @@ def commit(self):
11091116
selected = Values(self.conditions, conjunction=False)(self.dataset)
11101117
selection = np.in1d(
11111118
self.dataset.ids, selected.ids, assume_unique=True).nonzero()[0]
1119+
1120+
summary = len(selected) if selected else self.info.NoOutput
1121+
details = format_summary_details(selected) if selected else ""
1122+
self.info.set_output_summary(summary, details)
11121123
self.Outputs.selected_data.send(selected)
11131124
self.Outputs.annotated_data.send(
11141125
create_annotated_table(self.dataset, selection))

Orange/widgets/visualize/tests/test_owboxplot.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Test methods with long descriptive names can omit docstrings
2-
# pylint: disable=missing-docstring
2+
# pylint: disable=missing-docstring, protected-access
33
import unittest
44
from unittest.mock import patch
55

@@ -12,6 +12,7 @@
1212
OWBoxPlot, FilterGraphicsRectItem, _quantiles
1313
)
1414
from Orange.widgets.tests.base import WidgetTest, WidgetOutputsTestMixin
15+
from Orange.widgets.utils.state_summary import format_summary_details
1516
from Orange.tests import test_filename
1617

1718

@@ -334,6 +335,30 @@ def test_value_all_missing_for_group(self):
334335
self.__select_group("a")
335336
self.assertTupleEqual(self.widget.conts.shape, (3, 2))
336337

338+
def test_summary(self):
339+
"""Check if status bar is updated when data is received"""
340+
data, info = self.titanic, self.widget.info
341+
no_input, no_output = "No data on input", "No data on output"
342+
343+
self.send_signal(self.widget.Inputs.data, data)
344+
summary, details = f"{len(data)}", format_summary_details(data)
345+
self.assertEqual(info._StateInfo__input_summary.brief, summary)
346+
self.assertEqual(info._StateInfo__input_summary.details, details)
347+
self.assertEqual(info._StateInfo__output_summary.brief, "")
348+
self.assertEqual(info._StateInfo__output_summary.details, no_output)
349+
350+
self._select_data()
351+
output = self.get_output(self.widget.Outputs.selected_data)
352+
summary, details = f"{len(output)}", format_summary_details(output)
353+
self.assertEqual(info._StateInfo__output_summary.brief, summary)
354+
self.assertEqual(info._StateInfo__output_summary.details, details)
355+
356+
self.send_signal(self.widget.Inputs.data, None)
357+
self.assertEqual(info._StateInfo__input_summary.brief, "")
358+
self.assertEqual(info._StateInfo__input_summary.details, no_input)
359+
self.assertEqual(info._StateInfo__output_summary.brief, "")
360+
self.assertEqual(info._StateInfo__output_summary.details, no_output)
361+
337362

338363
class TestUtils(unittest.TestCase):
339364
def test(self):

0 commit comments

Comments
 (0)