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: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"> | <metal:target define-macro="target"> | ||||||
|   <tal:column 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']" |     <a tal:omit-tag="python: | ||||||
|  |                   not getattr(item, 'showLinks', True) or not value['url']" | ||||||
|        tal:attributes="href value/url" |        tal:attributes="href value/url" | ||||||
|        tal:content="value/title" /> |        tal:content="value/title" /> | ||||||
|   </tal:column> |   </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.field import Field as BaseField | ||||||
| from cybertools.composer.report.result import ResultSet | from cybertools.composer.report.result import ResultSet | ||||||
|  | from cybertools.stateful.interfaces import IStateful, IStatesDefinition | ||||||
| from cybertools.util.date import timeStamp2Date | from cybertools.util.date import timeStamp2Date | ||||||
| from loops.common import baseObject | from loops.common import baseObject | ||||||
| from loops.expert.report import ReportInstance | from loops.expert.report import ReportInstance | ||||||
|  | @ -100,6 +101,23 @@ class DateField(Field): | ||||||
|             return value.isoformat()[:10] |             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): | class VocabularyField(Field): | ||||||
| 
 | 
 | ||||||
|     vocabulary = None |     vocabulary = None | ||||||
|  |  | ||||||
|  | @ -228,7 +228,8 @@ The user interface is a ReportConceptView subclass that is directly associated w | ||||||
|   ...     print |   ...     print | ||||||
|   08/12/28 19:00 20:15 |   08/12/28 19:00 20:15 | ||||||
|     {'url': '.../home/.36', 'title': u'loops Development'} |     {'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 |   >>> results.totals.data | ||||||
|   {'effort': 900} |   {'effort': 900} | ||||||
|  |  | ||||||
|  | @ -34,7 +34,7 @@ from cybertools.util.format import formatDate | ||||||
| from cybertools.util.jeep import Jeep | from cybertools.util.jeep import Jeep | ||||||
| from loops.common import adapted, baseObject | from loops.common import adapted, baseObject | ||||||
| from loops.expert.browser.report import ReportConceptView | 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 |                             TextField, UrlField | ||||||
| from loops.expert.field import SubReport, SubReportField | from loops.expert.field import SubReport, SubReportField | ||||||
| from loops.expert.report import ReportInstance | from loops.expert.report import ReportInstance | ||||||
|  | @ -50,13 +50,6 @@ class WorkStatementView(ReportConceptView): | ||||||
| 
 | 
 | ||||||
| # fields | # fields | ||||||
| 
 | 
 | ||||||
| class StateField(Field): |  | ||||||
| 
 |  | ||||||
|     def getDisplayValue(self, row): |  | ||||||
|         value = self.getValue(row) |  | ||||||
|         return util._(value) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| class TrackDateField(Field): | class TrackDateField(Field): | ||||||
| 
 | 
 | ||||||
|     fieldType = 'date' |     fieldType = 'date' | ||||||
|  | @ -165,6 +158,7 @@ effort = DurationField('effort', u'Effort', | ||||||
| state = StateField('state', u'State', | state = StateField('state', u'State', | ||||||
|                 description=u'The state of the work.', |                 description=u'The state of the work.', | ||||||
|                 cssClass='center', |                 cssClass='center', | ||||||
|  |                 statesDefinition='workItemStates', | ||||||
|                 executionSteps=['query', 'output']) |                 executionSteps=['query', 'output']) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue