subtotals fixes
This commit is contained in:
parent
0208aa5595
commit
c5715c322d
1 changed files with 17 additions and 5 deletions
|
@ -22,12 +22,13 @@ Report result sets and related classes.
|
|||
|
||||
from copy import copy
|
||||
from zope.cachedescriptors.property import Lazy
|
||||
from zope.traversing.api import getName
|
||||
|
||||
from cybertools.composer.interfaces import IInstance
|
||||
from cybertools.composer.report.base import BaseQueryCriteria
|
||||
from cybertools.util.jeep import Jeep
|
||||
|
||||
from loops.common import normalizeName
|
||||
from loops.common import baseObject, normalizeName, AdapterBase
|
||||
|
||||
|
||||
class BaseRow(object):
|
||||
|
@ -133,9 +134,9 @@ class ResultSet(object):
|
|||
self.limits = limits
|
||||
self.totals = TotalsRow(None, self)
|
||||
|
||||
def getHeaderRow(self, row, columns):
|
||||
def getHeaderRow(self, row, columns, index=None):
|
||||
headerRow = self.headerRowFactory(None, self)
|
||||
headerRow.cssClass = 'headerRow'
|
||||
headerRow.cssClass = 'headerRow level-' + str(index and index + 1 or 1)
|
||||
headerRow.headerColumns = []
|
||||
for c in columns:
|
||||
if c.output:
|
||||
|
@ -165,6 +166,10 @@ class ResultSet(object):
|
|||
if isinstance(value, basestring):
|
||||
rowId = '%s-%s' % (gf.name, normalizeName(value))
|
||||
rowId = rowId.replace('.', '_')
|
||||
if isinstance(value, AdapterBase):
|
||||
value = getName(baseObject(value))
|
||||
rowId = '%s-%s' % (gf.name, normalizeName(value))
|
||||
rowId = rowId.replace('.', '_')
|
||||
subTotalsRow.cssClass = 'subTotalsRow'
|
||||
subTotalsRow.rowId = rowId
|
||||
for idx, c in enumerate(columns):
|
||||
|
@ -215,7 +220,8 @@ class ResultSet(object):
|
|||
# for j, f in enumerate(self.groupColumns)[idx:]:
|
||||
# # use idx+j for correct indexing
|
||||
groupValues[idx] = value
|
||||
headerRows.append(self.getHeaderRow(row, (f,) + f.outputWith))
|
||||
headerRows.append(self.getHeaderRow(row, (f,) + f.outputWith,
|
||||
index=idx))
|
||||
if lastRow is not None and f.getDisplayValue(lastRow):
|
||||
subTr = self.getSubTotalsRow(f, lastRow,
|
||||
self.subTotalsColumns[idx], subTotals[idx])
|
||||
|
@ -235,7 +241,7 @@ class ResultSet(object):
|
|||
if lastRow is not None:
|
||||
subTotalsRows = []
|
||||
for idx, f in enumerate(self.groupColumns):
|
||||
if f.getDisplayValue(lastRow):
|
||||
if f.getValue(lastRow):
|
||||
subTr = self.getSubTotalsRow(f, lastRow,
|
||||
self.subTotalsColumns[idx], subTotals[idx])
|
||||
if subTr is not None:
|
||||
|
@ -264,6 +270,12 @@ class ResultSet(object):
|
|||
value = value.replace('.', '_')
|
||||
row.subTotalsRowIds = copy(row.subTotalsRowIds) +\
|
||||
['%s-%s' % (name, value)]
|
||||
if isinstance(value, AdapterBase):
|
||||
value = getName(baseObject(value))
|
||||
value = normalizeName(value)
|
||||
value = value.replace('.', '_')
|
||||
row.subTotalsRowIds = copy(row.subTotalsRowIds) +\
|
||||
['%s-%s' % (name, value)]
|
||||
elif isinstance(row, GroupHeaderRow):
|
||||
sourceField = row.sourceField
|
||||
groupNumbers[sourceField] = \
|
||||
|
|
Loading…
Add table
Reference in a new issue