add report row properties for js calculating totals and subtotals

This commit is contained in:
hplattner 2016-11-25 16:38:27 +01:00
parent 78969355b6
commit 78748051e2

View file

@ -27,6 +27,8 @@ from cybertools.composer.interfaces import IInstance
from cybertools.composer.report.base import BaseQueryCriteria from cybertools.composer.report.base import BaseQueryCriteria
from cybertools.util.jeep import Jeep from cybertools.util.jeep import Jeep
from loops.common import normalizeName
class BaseRow(object): class BaseRow(object):
@ -52,6 +54,8 @@ class Row(BaseRow):
attributeHandlers = {} attributeHandlers = {}
cssClass = u'' cssClass = u''
rowId = u''
subTotalRowIds = []
def getRawValue(self, attr): def getRawValue(self, attr):
return self.attributeHandlers.get( return self.attributeHandlers.get(
@ -153,7 +157,9 @@ class ResultSet(object):
return None return None
subTotalsRow = SubTotalsRow(None, self) subTotalsRow = SubTotalsRow(None, self)
subTotalsRow.subTotalsGroupColumns = [] subTotalsRow.subTotalsGroupColumns = []
subTotalsRow.cssClass = 'subTotalsRow' rowId = '%s-%s' % (gf.name, normalizeName(gf.getRawValue(row)))
rowId = rowId.replace('.', '_')
subTotalsRow.cssClass = 'subTotalsRow ' + rowId
for idx, c in enumerate(columns): for idx, c in enumerate(columns):
subTotalsRow.data[c.name] = values[idx] subTotalsRow.data[c.name] = values[idx]
if gf in self.subTotalsGroupColumns: if gf in self.subTotalsGroupColumns:
@ -243,6 +249,12 @@ class ResultSet(object):
row.groupNumbers = copy(groupNumbers) row.groupNumbers = copy(groupNumbers)
row.groupSequenceNumber = copy(groupSequenceNumber) row.groupSequenceNumber = copy(groupSequenceNumber)
groupSequenceNumber = groupSequenceNumber + 1 groupSequenceNumber = groupSequenceNumber + 1
for idx, f in enumerate(self.groupColumns):
name = f.name
value = normalizeName(f.getRawValue(row))
value = value.replace('.', '_')
row.subTotalRowIds = copy(row.subTotalRowIds) + ['%s-%s' % (
name, value)]
elif isinstance(row, GroupHeaderRow): elif isinstance(row, GroupHeaderRow):
sourceField = row.sourceField sourceField = row.sourceField
groupNumbers[sourceField] = \ groupNumbers[sourceField] = \