add: subTotalsRow Description support
This commit is contained in:
parent
0efbc5db1b
commit
c50aff0098
2 changed files with 21 additions and 5 deletions
|
@ -106,6 +106,9 @@ class Report(Template):
|
||||||
def getOutputFields(self):
|
def getOutputFields(self):
|
||||||
return [f for f in self.fields if 'output' in f.executionSteps]
|
return [f for f in self.fields if 'output' in f.executionSteps]
|
||||||
|
|
||||||
|
def getAllFields(self):
|
||||||
|
return [f for f in self.fields]
|
||||||
|
|
||||||
def getActiveOutputFields(self):
|
def getActiveOutputFields(self):
|
||||||
if not self.outputFields:
|
if not self.outputFields:
|
||||||
fieldNames = [f.name for f in self.getOutputFields()]
|
fieldNames = [f.name for f in self.getOutputFields()]
|
||||||
|
|
|
@ -58,6 +58,10 @@ class Row(BaseRow):
|
||||||
def displayedColumns(self):
|
def displayedColumns(self):
|
||||||
return self.parent.context.getActiveOutputFields()
|
return self.parent.context.getActiveOutputFields()
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def allColumns(self):
|
||||||
|
return self.partent.context.getAllFields()
|
||||||
|
|
||||||
def useRowProperty(self, attr):
|
def useRowProperty(self, attr):
|
||||||
return getattr(self, attr)
|
return getattr(self, attr)
|
||||||
|
|
||||||
|
@ -114,10 +118,12 @@ class ResultSet(object):
|
||||||
headerRow.headerColumns.append(headerColumn)
|
headerRow.headerColumns.append(headerColumn)
|
||||||
return headerRow
|
return headerRow
|
||||||
|
|
||||||
def getSubTotalsRow(self, row, columns, values):
|
def getSubTotalsRow(self, row, columns, values, dcolumns):
|
||||||
subTotalsRow = SubTotalsRow(None, self)
|
subTotalsRow = SubTotalsRow(None, self)
|
||||||
for idx, c in enumerate(columns):
|
for idx, c in enumerate(columns):
|
||||||
subTotalsRow.data[c.name] = values[idx]
|
subTotalsRow.data[c.name] = values[idx]
|
||||||
|
for c in dcolumns:
|
||||||
|
subTotalsRow.data[c.output] = u'SUMME: ' + c.getRawValue(row)
|
||||||
return subTotalsRow
|
return subTotalsRow
|
||||||
|
|
||||||
def getResult(self):
|
def getResult(self):
|
||||||
|
@ -130,7 +136,10 @@ class ResultSet(object):
|
||||||
res = []
|
res = []
|
||||||
groupValues = [None for f in self.groupColumns]
|
groupValues = [None for f in self.groupColumns]
|
||||||
subTotals = [[0.0 for f in stc] for stc in self.subTotalsColumns]
|
subTotals = [[0.0 for f in stc] for stc in self.subTotalsColumns]
|
||||||
|
lastRow = None
|
||||||
for row in result:
|
for row in result:
|
||||||
|
if lastRow is None:
|
||||||
|
lastRow = row
|
||||||
subTotalsRows = []
|
subTotalsRows = []
|
||||||
headerRows = []
|
headerRows = []
|
||||||
for idx, f in enumerate(self.groupColumns):
|
for idx, f in enumerate(self.groupColumns):
|
||||||
|
@ -138,8 +147,11 @@ class ResultSet(object):
|
||||||
if value != groupValues[idx]:
|
if value != groupValues[idx]:
|
||||||
groupValues[idx] = value
|
groupValues[idx] = value
|
||||||
headerRows.append(self.getHeaderRow(row, (f,) + f.outputWith))
|
headerRows.append(self.getHeaderRow(row, (f,) + f.outputWith))
|
||||||
subTotalsRows.append(self.getSubTotalsRow(
|
subTotalsRows.append(
|
||||||
row, self.subTotalsColumns[idx], subTotals[idx]))
|
self.getSubTotalsRow(lastRow,
|
||||||
|
self.subTotalsColumns[idx],
|
||||||
|
subTotals[idx],
|
||||||
|
f.outputWith))
|
||||||
subTotals[idx] = [0.0 for f in self.subTotalsColumns[idx]]
|
subTotals[idx] = [0.0 for f in self.subTotalsColumns[idx]]
|
||||||
for subTotalsRow in reversed(subTotalsRows):
|
for subTotalsRow in reversed(subTotalsRows):
|
||||||
res.append(subTotalsRow)
|
res.append(subTotalsRow)
|
||||||
|
@ -149,6 +161,7 @@ class ResultSet(object):
|
||||||
for idx, sc in enumerate(self.subTotalsColumns):
|
for idx, sc in enumerate(self.subTotalsColumns):
|
||||||
for idx2, f in enumerate(sc):
|
for idx2, f in enumerate(sc):
|
||||||
subTotals[idx][idx2] += f.getValue(row)
|
subTotals[idx][idx2] += f.getValue(row)
|
||||||
|
lastRow = row
|
||||||
result = res
|
result = res
|
||||||
if self.limits:
|
if self.limits:
|
||||||
start, stop = self.limits
|
start, stop = self.limits
|
||||||
|
|
Loading…
Add table
Reference in a new issue