visualisation: return 0.0 for None measures in json_data (#38913)

This commit is contained in:
Benjamin Dauvergne 2020-01-13 11:26:50 +01:00
parent 5b72a4be6d
commit 5473870dc2
3 changed files with 9 additions and 3 deletions

View File

@ -137,6 +137,12 @@ class Measure(Base):
'expression': str, 'expression': str,
} }
@property
def default_value(self):
if self.type in ['integer', 'percent']:
return 0
return None
class Dimension(Base): class Dimension(Base):
__slots__ = ['name', 'label', 'type', 'join', 'value', 'value_label', __slots__ = ['name', 'label', 'type', 'join', 'value', 'value_label',

View File

@ -181,7 +181,7 @@ class Visualization(object):
return data return data
def default_cell(self): def default_cell(self):
return MeasureCell(measure=self.measure, value=None) return MeasureCell(measure=self.measure, value=self.measure.default_value)
def table_2d(self): def table_2d(self):
'''Layout data into 2d tables''' '''Layout data into 2d tables'''

View File

@ -192,11 +192,11 @@ def test_none_percent_json_data(schema1, app, admin):
assert visu.json_data() == [ assert visu.json_data() == [
{ {
'coords': [{'value': u'2017'}, {'value': u'cat\xe92'}], 'coords': [{'value': u'2017'}, {'value': u'cat\xe92'}],
'measures': [{'value': None}] 'measures': [{'value': 0}]
}, },
{ {
'coords': [{'value': u'2017'}, {'value': u'cat\xe93'}], 'coords': [{'value': u'2017'}, {'value': u'cat\xe93'}],
'measures': [{'value': None}]}, 'measures': [{'value': 0}]},
{ {
'coords': [{'value': u'2017'}, {'value': u'cat\xe91'}], 'coords': [{'value': u'2017'}, {'value': u'cat\xe91'}],
'measures': [{'value': 94.11764705882354}]}, 'measures': [{'value': 94.11764705882354}]},