Skip to content

Commit

Permalink
OWBoxPlot: data info displayed in the status bar
Browse files Browse the repository at this point in the history
  • Loading branch information
aturanjanin committed Apr 6, 2020
1 parent 3f4c786 commit 812208c
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
11 changes: 11 additions & 0 deletions Orange/widgets/visualize/owboxplot.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
from Orange.widgets.utils.annotated_data import (create_annotated_table,
ANNOTATED_DATA_SIGNAL_NAME)
from Orange.widgets.utils.widgetpreview import WidgetPreview
from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Input, Output


Expand Down Expand Up @@ -277,6 +278,9 @@ def __init__(self):
self.stat_test = ""
self.mainArea.setMinimumWidth(300)

self.info.set_input_summary(self.info.NoInput)
self.info.set_output_summary(self.info.NoOutput)

self.stats = self.dist = self.conts = []
self.is_continuous = False

Expand Down Expand Up @@ -329,8 +333,11 @@ def set_data(self, dataset):
self.openContext(self.dataset)
self.grouping_changed()
self.attr_changed()
self.info.set_input_summary(len(dataset),
format_summary_details(dataset))
else:
self.reset_all_data()
self.info.set_input_summary(self.info.NoInput)
self.commit()

def select_default_variables(self):
Expand Down Expand Up @@ -1109,6 +1116,10 @@ def commit(self):
selected = Values(self.conditions, conjunction=False)(self.dataset)
selection = np.in1d(
self.dataset.ids, selected.ids, assume_unique=True).nonzero()[0]

summary = len(selected) if selected else self.info.NoOutput
details = format_summary_details(selected) if selected else ""
self.info.set_output_summary(summary, details)
self.Outputs.selected_data.send(selected)
self.Outputs.annotated_data.send(
create_annotated_table(self.dataset, selection))
Expand Down
27 changes: 26 additions & 1 deletion Orange/widgets/visualize/tests/test_owboxplot.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring
# pylint: disable=missing-docstring, protected-access
import unittest
from unittest.mock import patch

Expand All @@ -12,6 +12,7 @@
OWBoxPlot, FilterGraphicsRectItem, _quantiles
)
from Orange.widgets.tests.base import WidgetTest, WidgetOutputsTestMixin
from Orange.widgets.utils.state_summary import format_summary_details
from Orange.tests import test_filename


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

def test_summary(self):
"""Check if status bar is updated when data is received"""
data, info = self.titanic, self.widget.info
no_input, no_output = "No data on input", "No data on output"

self.send_signal(self.widget.Inputs.data, data)
summary, details = f"{len(data)}", format_summary_details(data)
self.assertEqual(info._StateInfo__input_summary.brief, summary)
self.assertEqual(info._StateInfo__input_summary.details, details)
self.assertEqual(info._StateInfo__output_summary.brief, "")
self.assertEqual(info._StateInfo__output_summary.details, no_output)

self._select_data()
output = self.get_output(self.widget.Outputs.selected_data)
summary, details = f"{len(output)}", format_summary_details(output)
self.assertEqual(info._StateInfo__output_summary.brief, summary)
self.assertEqual(info._StateInfo__output_summary.details, details)

self.send_signal(self.widget.Inputs.data, None)
self.assertEqual(info._StateInfo__input_summary.brief, "")
self.assertEqual(info._StateInfo__input_summary.details, no_input)
self.assertEqual(info._StateInfo__output_summary.brief, "")
self.assertEqual(info._StateInfo__output_summary.details, no_output)


class TestUtils(unittest.TestCase):
def test(self):
Expand Down

0 comments on commit 812208c

Please sign in to comment.