Skip to content

Commit dcd7f72

Browse files
authored
Merge pull request #6677 from janezd/vizrank-disable-when-no-data
Minor fixes in Mosaic and Sieve vizrank
2 parents 292045c + a66c3c8 commit dcd7f72

File tree

4 files changed

+43
-13
lines changed

4 files changed

+43
-13
lines changed

Orange/widgets/visualize/owmosaic.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from Orange.statistics.distribution import get_distribution, get_distributions
2121
from Orange.widgets import gui, settings
2222
from Orange.widgets.settings import (
23-
Setting, DomainContextHandler, ContextSetting, SettingProvider)
23+
Setting, DomainContextHandler, ContextSetting)
2424
from Orange.widgets.utils import to_html, get_variable_values_sorted
2525
from Orange.widgets.utils.annotated_data import (create_annotated_table,
2626
ANNOTATED_DATA_SIGNAL_NAME)
@@ -52,14 +52,24 @@ def __init__(self, parent, data, attr_color, attr_range_index):
5252
["a single variable", "two variables", "three variables",
5353
"four variables", "at most two variables",
5454
"at most three variables", "at most four variables"])
55-
item0 = combo.model().item(0)
56-
enabled = Qt.ItemIsSelectable | Qt.ItemIsEnabled
55+
56+
def disable_item(i):
57+
enabled = Qt.ItemIsSelectable | Qt.ItemIsEnabled
58+
item = combo.model().item(i)
59+
item.setFlags(item.flags() & ~enabled)
60+
if self.attr_range_index == i:
61+
# select one attribute less, or a pair instead of a single
62+
self.attr_range_index = i - 1 if i else 1
63+
5764
if self.attr_color is None:
58-
item0.setFlags(item0.flags() & ~enabled)
59-
else:
60-
item0.setFlags(item0.flags() | enabled)
65+
disable_item(0) # can't do a single attribute with Pearson
66+
if len(data.domain.attributes) < 4:
67+
disable_item(3) # four attributes
68+
if len(data.domain.attributes) < 3:
69+
disable_item(2) # three attributes
70+
6171
combo.activated.connect(self.on_attrs_changed)
62-
combo.setCurrentIndex(attr_range_index)
72+
combo.setCurrentIndex(self.attr_range_index)
6373
box.layout().addWidget(label)
6474
box.layout().addWidget(combo)
6575
gui.rubber(box)
@@ -227,7 +237,6 @@ class Outputs:
227237
annotated_data = Output(ANNOTATED_DATA_SIGNAL_NAME, Table)
228238

229239
settingsHandler = DomainContextHandler()
230-
vizrank = SettingProvider(MosaicVizRank)
231240
settings_version = 2
232241
use_boxes = Setting(True)
233242
variable1: Variable = ContextSetting(None)
@@ -394,8 +403,8 @@ def set_data(self, data):
394403
self.openContext(self.data)
395404

396405
def init_vizrank(self):
397-
if self.data is not None and len(self.data) > 1 \
398-
and len(self.data.domain.attributes) >= 1:
406+
if self.discrete_data is not None and len(self.discrete_data) > 1 \
407+
and len(self.discrete_data.domain.attributes) >= 2:
399408
attr_range_index = self.vizrank_attr_range_index
400409
if self.variable_color is None:
401410
if attr_range_index == 0:

Orange/widgets/visualize/owsieve.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ def __init__(self, data, attr1, attr2):
5656

5757

5858
class SieveRank(VizRankDialogAttrPair):
59-
caption_title = "Sieve Rank"
6059
sort_names_in_row = True
6160

6261
def compute_score(self, state):

Orange/widgets/visualize/tests/test_owmosaic.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,30 @@ def test_max_attr_combo_1_disabling(self):
356356
model = combo.model()
357357
self.assertEqual(model.item(0).flags() & enabled, enabled)
358358

359+
def test_disable_combo_3_4(self):
360+
def assert_enabled(*args, sel=1):
361+
enabled = Qt.ItemIsSelectable | Qt.ItemIsEnabled
362+
vizrank = widget.vizrank_dialog
363+
combo = vizrank.attrs_combo
364+
model = combo.model()
365+
for opt in (2, 3):
366+
self.assertEqual(model.item(opt).flags() & enabled,
367+
enabled if opt + 1 in args else Qt.NoItemFlags)
368+
self.assertEqual(combo.currentIndex(), sel)
369+
370+
widget = self.widget
371+
372+
data = Table("iris.tab")
373+
widget.vizrank_attr_range_index = 3
374+
self.send_signal(self.widget.Inputs.data, data)
375+
assert_enabled(3, 4, sel=3)
376+
377+
self.send_signal(self.widget.Inputs.data, data[:, :3])
378+
assert_enabled(3, sel=2)
379+
380+
self.send_signal(self.widget.Inputs.data, data[:, :2])
381+
assert_enabled(sel=1)
382+
359383
def test_attr_range(self):
360384
data = Table("iris.tab")
361385
domain = data.domain

i18n/si.jaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14346,8 +14346,6 @@ widgets/visualize/owsieve.py:
1434614346
class `ChiSqStats`:
1434714347
def `__init__`:
1434814348
ignore: false
14349-
class `SieveRank`:
14350-
Sieve Rank: Rangiranje
1435114349
class `OWSieveDiagram`:
1435214350
Sieve Diagram: Sievov diagram
1435314351
'Visualize the observed and expected frequencies ': 'Prikaz pričakovanih in opaženih pogostosti '

0 commit comments

Comments
 (0)