add 'cssClass' property for controlling display of report fields; remove 'td' tags from field renderers for more flexibility

This commit is contained in:
Helmut Merz 2012-05-02 16:44:11 +02:00
parent 460520be20
commit 17ccce90ce
5 changed files with 44 additions and 25 deletions

View file

@ -77,6 +77,7 @@ from loops.versioning.interfaces import IVersionable
concept_macros = ViewPageTemplateFile('concept_macros.pt')
conceptMacrosTemplate = concept_macros
resource_macros = ViewPageTemplateFile('resource_macros.pt')
form_macros = ViewPageTemplateFile('form_macros.pt')
class NameField(schema.ASCIILine):
@ -161,7 +162,10 @@ class BaseView(GenericView, I18NView):
@Lazy
def resource_macros(self):
return self.controller.getTemplateMacros('resource', resource_macros)
#return resource_macros.macros
@Lazy
def form_macros(self):
return self.controller.getTemplateMacros('form', form_macros)
def breadcrumbs(self):
return []

View file

@ -468,6 +468,7 @@ class NodeView(BaseView):
def getViewForTarget(self, obj, setup=True):
if obj is not None:
obj = baseObject(obj)
basicView = component.getMultiAdapter((obj, self.request))
if obj == self.targetObject:
basicView._viewName = self.context.viewName

View file

@ -162,8 +162,8 @@ class AdapterBase(object):
def uid(self):
return util.getUidForObject(self.context)
def getChildren(self):
for c in self.context.getChildren():
def getChildren(self, predicates=None):
for c in self.context.getChildren(predicates):
yield adapted(c, self.languageInfo)
def getLongTitle(self):

View file

@ -20,50 +20,63 @@
<tr>
<th tal:repeat="col results/displayedColumns"
tal:content="col/title"
tal:attributes="class col/cssClass"
i18n:translate="" />
</tr>
<tr tal:repeat="row results">
<tal:column repeat="col results/displayedColumns">
<metal:column use-macro="python:view.getColumnRenderer(col.renderer)" />
</tal:column>
<td tal:repeat="col results/displayedColumns">
<metal:column use-macro="python:view.getColumnRenderer(col)" />
</td>
</tr>
<tr tal:define="row nocall:results/totals"
tal:condition="nocall:row">
<tal:column repeat="col results/displayedColumns">
<metal:column use-macro="python:view.getColumnRenderer(col.renderer)" />
</tal:column>
<td tal:repeat="col results/displayedColumns"
tal:attributes="class col/cssClass">
<metal:column use-macro="python:view.getColumnRenderer(col)" />
</td>
</tr>
</table>
</div>
<metal:standard define-macro="standard">
<td tal:content="structure python:col.getDisplayValue(row)" />
<tal:column content="structure python:col.getDisplayValue(row)" />
</metal:standard>
<metal:right define-macro="center">
<td style="text-align: center"
tal:content="python:col.getDisplayValue(row)" />
<tal:column content="python:col.getDisplayValue(row)" />
</metal:right>
<metal:right define-macro="right">
<td style="text-align: right"
tal:content="python:col.getDisplayValue(row)" />
<tal:column content="python:col.getDisplayValue(row)" />
</metal:right>
<metal:target define-macro="target">
<td tal:define="value python:col.getDisplayValue(row)">
<tal:column define="value python:col.getDisplayValue(row)">
<a tal:omit-tag="python:not getattr(item, 'showLinks', True) or not value['url']"
tal:attributes="href value/url"
tal:content="value/title" /></td>
tal:content="value/title" />
</tal:column>
</metal:target>
<metal:standard define-macro="multiline">
<tal:column define="values python:col.getDisplayValues(row)">
<tal:values repeat="value values">
<span tal:replace="value" />
<span tal:condition="python: repeat['value'].index() < len(values)">
<br/>
</span>
</tal:values>
</tal:column>
</metal:standard>
<div metal:define-macro="subreport">
<td>
<tal:column>
<table class="subreport"
tal:define="results python:col.getValue(row)">
<tr>
@ -72,18 +85,18 @@
i18n:translate="" />
</tr>
<tr tal:repeat="row results">
<tal:column repeat="col results/displayedColumns">
<metal:column use-macro="python:view.getColumnRenderer(col.renderer)" />
</tal:column>
<td tal:repeat="col results/displayedColumns">
<metal:column use-macro="python:view.getColumnRenderer(col)" />
</td>
</tr>
<tr tal:define="row nocall:results/totals"
tal:condition="nocall:row">
<tal:column repeat="col results/displayedColumns">
<metal:column use-macro="python:view.getColumnRenderer(col.renderer)" />
</tal:column>
<td tal:repeat="col results/displayedColumns">
<metal:column use-macro="python:view.getColumnRenderer(col)" />
</td>
</tr>
</table>
</td>
</tal:column>
</div>

View file

@ -56,7 +56,7 @@ class DecimalField(Field):
format = 'decimal'
pattern = u'#,##0.00;-#,##0.00'
renderer = 'right'
cssClass = 'number'
def getDisplayValue(self, row):
value = self.getRawValue(row)
@ -76,6 +76,7 @@ class DecimalField(Field):
class DateField(Field):
format = ('date', 'short')
cssClass = 'center'
def getDisplayValue(self, row):
value = self.getRawValue(row)