[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r7794 - in trunk/gnue-reports: samples/foobulations src/base src/
From: |
btami |
Subject: |
[gnue] r7794 - in trunk/gnue-reports: samples/foobulations src/base src/base/layout |
Date: |
Sun, 7 Aug 2005 13:36:57 -0500 (CDT) |
Author: btami
Date: 2005-08-07 13:36:55 -0500 (Sun, 07 Aug 2005)
New Revision: 7794
Modified:
trunk/gnue-reports/samples/foobulations/monthly.grd
trunk/gnue-reports/src/base/GRDataMapper.py
trunk/gnue-reports/src/base/GRParser.py
trunk/gnue-reports/src/base/layout/GRFormula.py
trunk/gnue-reports/src/base/layout/GRLayout.py
trunk/gnue-reports/src/base/layout/GRSumm.py
Log:
added formula summary support
Modified: trunk/gnue-reports/samples/foobulations/monthly.grd
===================================================================
--- trunk/gnue-reports/samples/foobulations/monthly.grd 2005-08-07 14:36:00 UTC
(rev 7793)
+++ trunk/gnue-reports/samples/foobulations/monthly.grd 2005-08-07 18:36:55 UTC
(rev 7794)
@@ -74,6 +74,7 @@
<out:col/>
<out:col align="right">Total for <field name="name"/></out:col>
<out:col align="right"><summ function="sum" section="details"
field="foobs"/></out:col>
+ <out:col align="right"><summ function="sum" section="details"
formula="plus2"/></out:col>
</out:row>
<default>
<out:row>
@@ -82,11 +83,13 @@
<out:col/>
</out:row>
</default>
+ <formula name="sumplus2"><trigger type="On-Process"
src="myFoobs"/></formula>
</section>
<out:row type="subtotal" level="1">
<out:col/>
<out:col align="right">Grand Total</out:col>
<out:col align="right"><summ function="sum" section="nameBreak"
field="foobs"/></out:col>
+ <out:col align="right"><summ function="sum" section="nameBreak"
formula="sumplus2"/></out:col>
</out:row>
Modified: trunk/gnue-reports/src/base/GRDataMapper.py
===================================================================
--- trunk/gnue-reports/src/base/GRDataMapper.py 2005-08-07 14:36:00 UTC (rev
7793)
+++ trunk/gnue-reports/src/base/GRDataMapper.py 2005-08-07 18:36:55 UTC (rev
7794)
@@ -100,18 +100,18 @@
#
# Add a summary
#
- def addSummary(self, function, field):
+ def addSummary(self, function, key):
try:
- self.summaries[field][function] = None
+ self.summaries[key][function] = None
except KeyError:
- self.summaries[field] = {function:None}
+ self.summaries[key] = {function:None}
# If this function relies on other
# functions, add those as well (e.g.,
# average depends on sum and count)
try:
for func in _summMultiMapping[function]:
- self.addSummary(self, func, field)
+ self.addSummary(self, func, key)
except KeyError:
pass
@@ -119,7 +119,7 @@
# Add a formula
#
def addFormula(self, name, object):
- self.formulas[name] = ""
+ self.formulas[name] = None
self.formulaObjects[name] = object
@@ -144,7 +144,11 @@
# Get a formula's current value
#
def getFormula(self, name, format):
- return GDataFormatter.applyFormatting(self.formulas[name], format)
+ val = self.formulas[name]
+ if val is None:
+ return ""
+ else:
+ return GDataFormatter.applyFormatting("%s" % val, format)
#
# Add a section
@@ -157,9 +161,9 @@
# Zero out the summary data
#
def clearSummaries(self):
- for field in self.summaries.keys():
- for function in self.summaries[field].keys():
- self.summaries[field][function] = None
+ for key in self.summaries.keys():
+ for function in self.summaries[key].keys():
+ self.summaries[key][function] = None
self._clearOnNextSet = 0
@@ -182,23 +186,6 @@
return changed
- #
- # Initiate the calculation of summaries
- #
- # TODO: I **SERIOUSLY** don't think this is being used any longer
- def _handleSummary(self):
- if self._clearOnNextSet:
- self.clearSummaries()
- # Now, calc all summaries
- for field in self.summaries.keys():
- for function in _summFunctions:
- if self.summaries[field].has_key(function):
- try:
- self._summMap[function](field, self.fields[field])
- except KeyError:
- pass
-
-
def _dsResultSetActivated (self, event):
GDebug.printMesg (5, 'GRDataMapper._dsResultSetActivated on %s' %
self.name)
self._resultsets.insert (0, event.resultSet)
@@ -209,45 +196,45 @@
##
# Summary function: "count"
- def _summ_count(self, field, value):
+ def _summ_count(self, key, value):
if value is not None:
try:
- self.summaries[field]['count'] += 1
+ self.summaries[key]['count'] += 1
except TypeError:
- self.summaries[field]['count'] = 1
+ self.summaries[key]['count'] = 1
# Summary function: "sum"
- def _summ_sum(self, field, value):
+ def _summ_sum(self, key, value):
if value is not None:
if type(value) in _numericTypes:
try:
- self.summaries[field]['sum'] += FixedPoint(value)
+ self.summaries[key]['sum'] += FixedPoint(value)
except TypeError:
- self.summaries[field]['sum'] = FixedPoint(value)
+ self.summaries[key]['sum'] = FixedPoint(value)
else:
- raise "Attempting to 'sum' a non-numeric field %s" % (field)
+ raise "Attempting to 'sum' a non-numeric %s" % (key)
# Summary function: "average"
- def _summ_avg(self, field, value):
+ def _summ_avg(self, key, value):
if type(value) in _numericTypes:
- self.summaries[field]['average'] = \
- self.summaries[field]['sum'] / self.summaries[field]['count']
+ self.summaries[key]['average'] = \
+ self.summaries[key]['sum'] / self.summaries[key]['count']
else:
- raise "Attempting to 'average' a non-numeric field %s" % (field)
+ raise "Attempting to 'average' a non-numeric %s" % (key)
# Summary function: "min"
- def _summ_min(self, field, value):
+ def _summ_min(self, key, value):
if value is not None:
- existing = self.summaries[field]['min']
+ existing = self.summaries[key]['min']
if existing is None or value < existing:
- self.summaries[field]['min'] = value
+ self.summaries[key]['min'] = value
# Summary function: "max"
- def _summ_max(self, field, value):
+ def _summ_max(self, key, value):
if value is not None:
- existing = self.summaries[field]['min']
+ existing = self.summaries[key]['min']
if existing is None or value > existing:
- self.summaries[field]['min'] = value
+ self.summaries[key]['min'] = value
@@ -302,12 +289,12 @@
self.sources.getDataSource(self.sectionMap[section].source) \
.referenceField(field)
- def addSummaryToSection(self, function, section, field):
+ def addSummaryToSection(self, function, section, field, formula):
+ self.sectionMap[section].addSummary(function, (field, formula))
+ if field != 'none':
+ self.sources.getDataSource(self.sectionMap[section].source) \
+ .referenceField(field)
- self.sectionMap[section].addSummary(function, field)
- self.sources.getDataSource(self.sectionMap[section].source) \
- .referenceField(field)
-
def addFormulaToSection(self, section, name, object):
self.sectionMap[section].addFormula(name, object)
@@ -374,6 +361,13 @@
nextSection = None
# Apply the recordset to each section we control,
+ for s in self.sourceMap[source]:
+
+ # Save the new field values in the data handler
+ for field in s.fields.keys():
+ s.fields[field] = recordset.getField(field)
+
+
# determining the first section to change.
for s in self.sourceMap[source]:
@@ -386,23 +380,23 @@
GDebug.printMesg(10, "After next record, first changed section is
%s" % s.name)
firstSection = s.name
-
- # Save the new field values in the data handler
- for field in s.fields.keys():
- s.fields[field] = recordset.getField(field)
-
# and run formula triggers
for formula in s.formulas.keys():
- s.formulas[formula] =
s.formulaObjects[formula].processTrigger('On-Process')
+ if s.formulaObjects[formula] != None:
+ s.formulas[formula] =
s.formulaObjects[formula].processTrigger('On-Process')
# ... and save any new summary data
if s._clearOnNextSet:
s.clearSummaries()
- for field in s.summaries.keys():
+ for key in s.summaries.keys():
+ field, formula = key
for function in _summFunctions:
- if s.summaries[field].has_key(function):
- s._summMap[function](field, recordset.getField(field))
+ if s.summaries[key].has_key(function):
+ if field != 'none':
+ s._summMap[function](key, recordset.getField(field))
+ elif formula != 'none' and s.formulas.has_key(formula):
+ s._summMap[function](key, s.formulas[formula])
# What will the next section be?
if (nextSection is None and \
Modified: trunk/gnue-reports/src/base/GRParser.py
===================================================================
--- trunk/gnue-reports/src/base/GRParser.py 2005-08-07 14:36:00 UTC (rev
7793)
+++ trunk/gnue-reports/src/base/GRParser.py 2005-08-07 18:36:55 UTC (rev
7794)
@@ -231,6 +231,9 @@
'field': {
'Typecast': GTypecast.name,
'Default': None},
+ 'formula': {
+ 'Typecast': GTypecast.name,
+ 'Default': None},
'section': {
'Typecast': GTypecast.name },
'format': {
@@ -242,8 +245,6 @@
'Attributes': {
'name': {
'Typecast': GTypecast.name },
- 'section': {
- 'Typecast': GTypecast.name },
'format': {
'Typecast': GTypecast.name } },
'ParentTags': ('layout',) },
Modified: trunk/gnue-reports/src/base/layout/GRFormula.py
===================================================================
--- trunk/gnue-reports/src/base/layout/GRFormula.py 2005-08-07 14:36:00 UTC
(rev 7793)
+++ trunk/gnue-reports/src/base/layout/GRFormula.py 2005-08-07 18:36:55 UTC
(rev 7794)
@@ -46,7 +46,6 @@
GRLayoutElement.__init__(self, parent, 'GRFormula')
self.section = None
self.format = None
- self._value = ""
self._validTriggers = {'ON-PROCESS': 'On-Process'}
Modified: trunk/gnue-reports/src/base/layout/GRLayout.py
===================================================================
--- trunk/gnue-reports/src/base/layout/GRLayout.py 2005-08-07 14:36:00 UTC
(rev 7793)
+++ trunk/gnue-reports/src/base/layout/GRLayout.py 2005-08-07 18:36:55 UTC
(rev 7794)
@@ -180,7 +180,7 @@
GDebug.printMesg(6,'Mapping summary %s [%s] to section %s' \
% (object._field, object.function, object._section))
self._mapper.addSummaryToSection(object.function,
- object._section, object._field)
+ object._section, object._field,
object._formula)
elif isinstance(object, GRFormula):
if object.section == None:
Modified: trunk/gnue-reports/src/base/layout/GRSumm.py
===================================================================
--- trunk/gnue-reports/src/base/layout/GRSumm.py 2005-08-07 14:36:00 UTC
(rev 7793)
+++ trunk/gnue-reports/src/base/layout/GRSumm.py 2005-08-07 18:36:55 UTC
(rev 7794)
@@ -52,11 +52,12 @@
self._section = None
self._field = string.lower(self.field)
+ self._formula = string.lower(self.formula)
return GRLayoutElement._buildObject(self)
def process(self, dest, mapper, isfirst, islast, firstSection, nextSection):
## structuralComment(dest,"<!-- [summ:%s:%s:%s] -->" % (self.section,
self._field, self.function))
- dest.write (self._mymapper.getSummary(self._field, self.function,
self.format))
+ dest.write (self._mymapper.getSummary((self._field, self._formula),
self.function, self.format))
## structuralComment(dest,"<!-- [/summ] -->")
return nextSection
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r7794 - in trunk/gnue-reports: samples/foobulations src/base src/base/layout,
btami <=