provide state field for reports, use in meeting minutes
This commit is contained in:
parent
6c72358426
commit
e054d43221
4 changed files with 33 additions and 10 deletions
|
@ -68,9 +68,19 @@
|
|||
</metal:right>
|
||||
|
||||
|
||||
<metal:state define-macro="state">
|
||||
<tal:column define=" value python:col.getDisplayValue(row)">
|
||||
<img tal:attributes="src string:$resourceBase${value/icon};
|
||||
alt value/title;
|
||||
title value/title" />
|
||||
</tal:column>
|
||||
</metal:state>
|
||||
|
||||
|
||||
<metal:target define-macro="target">
|
||||
<tal:column define="value python:col.getDisplayValue(row)">
|
||||
<a tal:omit-tag="python:not getattr(item, 'showLinks', True) or not value['url']"
|
||||
<a tal:omit-tag="python:
|
||||
not getattr(item, 'showLinks', True) or not value['url']"
|
||||
tal:attributes="href value/url"
|
||||
tal:content="value/title" />
|
||||
</tal:column>
|
||||
|
|
|
@ -27,6 +27,7 @@ from zope.schema.interfaces import IVocabularyFactory, IContextSourceBinder
|
|||
|
||||
from cybertools.composer.report.field import Field as BaseField
|
||||
from cybertools.composer.report.result import ResultSet
|
||||
from cybertools.stateful.interfaces import IStateful, IStatesDefinition
|
||||
from cybertools.util.date import timeStamp2Date
|
||||
from loops.common import baseObject
|
||||
from loops.expert.report import ReportInstance
|
||||
|
@ -100,6 +101,23 @@ class DateField(Field):
|
|||
return value.isoformat()[:10]
|
||||
|
||||
|
||||
class StateField(Field):
|
||||
|
||||
statesDefinition = 'workItemStates'
|
||||
renderer = 'state'
|
||||
|
||||
def getDisplayValue(self, row):
|
||||
if IStateful.providedBy(row.context):
|
||||
stf = row.context
|
||||
else:
|
||||
stf = component.getAdapter(row.context, IStateful,
|
||||
name=self.statesDefinition)
|
||||
stateObject = stf.getStateObject()
|
||||
icon = stateObject.icon or 'led%s.png' % stateObject.color
|
||||
return dict(title=util._(stateObject.title),
|
||||
icon='cybertools.icons/' + icon)
|
||||
|
||||
|
||||
class VocabularyField(Field):
|
||||
|
||||
vocabulary = None
|
||||
|
|
|
@ -228,7 +228,8 @@ The user interface is a ReportConceptView subclass that is directly associated w
|
|||
... print
|
||||
08/12/28 19:00 20:15
|
||||
{'url': '.../home/.36', 'title': u'loops Development'}
|
||||
{'url': '.../home/.33', 'title': u'john'} 01:15 00:15 finished
|
||||
{'url': '.../home/.33', 'title': u'john'} 01:15 00:15
|
||||
{'icon': 'cybertools.icons/ledgreen.png', 'title': u'finished'}
|
||||
|
||||
>>> results.totals.data
|
||||
{'effort': 900}
|
||||
|
|
|
@ -34,7 +34,7 @@ from cybertools.util.format import formatDate
|
|||
from cybertools.util.jeep import Jeep
|
||||
from loops.common import adapted, baseObject
|
||||
from loops.expert.browser.report import ReportConceptView
|
||||
from loops.expert.field import Field, TargetField, DateField, \
|
||||
from loops.expert.field import Field, TargetField, DateField, StateField, \
|
||||
TextField, UrlField
|
||||
from loops.expert.field import SubReport, SubReportField
|
||||
from loops.expert.report import ReportInstance
|
||||
|
@ -50,13 +50,6 @@ class WorkStatementView(ReportConceptView):
|
|||
|
||||
# fields
|
||||
|
||||
class StateField(Field):
|
||||
|
||||
def getDisplayValue(self, row):
|
||||
value = self.getValue(row)
|
||||
return util._(value)
|
||||
|
||||
|
||||
class TrackDateField(Field):
|
||||
|
||||
fieldType = 'date'
|
||||
|
@ -165,6 +158,7 @@ effort = DurationField('effort', u'Effort',
|
|||
state = StateField('state', u'State',
|
||||
description=u'The state of the work.',
|
||||
cssClass='center',
|
||||
statesDefinition='workItemStates',
|
||||
executionSteps=['query', 'output'])
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue