work in progress: meeting minutes: additional fields, improved layout

This commit is contained in:
Helmut Merz 2012-07-26 16:28:13 +02:00
parent 4cb27a1e4a
commit 0700bb971b
7 changed files with 174 additions and 78 deletions

Binary file not shown.

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: $Id$\n"
"POT-Creation-Date: 2007-05-22 12:00 CET\n"
"PO-Revision-Date: 2012-07-17 12:00 CET\n"
"PO-Revision-Date: 2012-07-26 12:00 CET\n"
"Last-Translator: Helmut Merz <helmutm@cy55.de>\n"
"Language-Team: loops developers <helmutm@cy55.de>\n"
"MIME-Version: 1.0\n"
@ -296,6 +296,9 @@ msgstr "Besprechungsprotokoll für dieses Objekt anzeigen."
msgid "Download Meeting Minutes"
msgstr "Besprechungsprotokoll generieren"
msgid "Copy Agenda Items"
msgstr "Tagesordnungspunkte kopieren"
msgid "Participants"
msgstr "Teilnehmer"
@ -303,7 +306,7 @@ msgid "The names of the persons taking part in the event."
msgstr "Die Namen der Personen, die an der Besprechung teilnehmen."
msgid "label_responsible"
msgstr "Vortragender"
msgstr "Vortragende/r"
msgid "desc_responsible"
msgstr "Person, die diesen Tagesordnungpunkt vertritt."
@ -315,10 +318,19 @@ msgid "desc_discussion"
msgstr "Diskussion"
msgid "label_consequences"
msgstr "Schlussfolgerungen"
msgstr "Schlussfolgerung"
msgid "desc_consequences"
msgstr "Schlussfolgerungen"
msgstr "Schlussfolgerung"
msgid "header_workitems"
msgstr "Aufgaben"
msgid "header_responsible"
msgstr "zuständig"
msgid "header_deadline"
msgstr "Termin"
msgid "Task/Action"
msgstr "Aufgabe"

View file

@ -64,7 +64,7 @@
<input type="hidden" name="form.action"
tal:attributes="value view/form_action" />
<metal:data use-macro="view/fieldRenderers/fields" />
<h3 i18n:translate="">Tasks</h3>
<br />
<tal:tasks define="report item/reportInstance;
reportView nocall:item;
results reportView/results;

View file

@ -186,7 +186,7 @@ class IAgendaItem(ILoopsAdapter):
missing_value=u'',
required=False)
concequences = schema.Text(
consequences = schema.Text(
title=_(u'label_consequences'),
description=_(u'desc_consequences.'),
default=u'',

View file

@ -248,7 +248,7 @@ Let's start with creating an a event and assigning it a task.
... typeInterface=IEvent)
>>> tAgendaItem = addAndConfigureObject(concepts, Concept, 'agendaitem',
... title=u'AgendaItem', conceptType=concepts.getTypeConcept(),
... typeInterface=IEvent)
... typeInterface=IAgendaItem)
>>> ev01 = addAndConfigureObject(concepts, Concept, 'ev01',
... title=u'loops Meeting', conceptType=tEvent)

View file

@ -25,85 +25,139 @@
reportView nocall:item;
results reportView/results;
fields results/context/fields">
<metal:page use-macro="item/macros/page_header" />
<table class="report" width="100%"
tal:define="showCheckboxes nothing">
<metal:header use-macro="item/macros/header" />
<metal:results use-macro="reportView/resultsRenderer" />
<metal:header use-macro="item/macros/rows" />
</table>
</div>
<div metal:define-macro="header"
<div metal:define-macro="page_header">
<table width="100%">
<tr>
<td>&nbsp;</td>
<td><h1 i18n:translate="">Meeting Minutes</h1></td>
<td><span i18n:translate="">Page</span> </td>
</tr>
<table>
</div>
<metal:header define-macro="header"
tal:define="row results/first">
<h1 i18n:translate="">Meeting Minutes</h1>
<h2 tal:define="col fields/eventTitle">
<metal:col use-macro="python:item.getColumnRenderer(col)" /></h2>
<div>
<tr>
<td colspan="4">
<div tal:define="col fields/eventTitle">
<metal:col use-macro="python:item.getColumnRenderer(col)" /></div>
<div tal:define="col fields/eventDescription">
<metal:col use-macro="python:item.getColumnRenderer(col)" /></div>
</td>
</tr>
<tr>
<td colspan="2">
<span tal:define="col fields/eventDate">
<metal:col use-macro="python:item.getColumnRenderer(col)" /></span>
</td>
<td colspan="2">
<span tal:define="col fields/eventStart">
<metal:col use-macro="python:item.getColumnRenderer(col)" /></span> -
<span tal:define="col fields/eventEnd">
<metal:col use-macro="python:item.getColumnRenderer(col)" /></span>
</div>
<div tal:define="col fields/eventDescription">
<metal:col use-macro="python:item.getColumnRenderer(col)" /></div>
</div>
</td>
</tr>
<tr>
<td width="20%"
i18n:translate="">Participants</td>
<td colspan="3">
<span tal:define="col fields/participants">
<metal:col use-macro="python:item.getColumnRenderer(col)" /></span>
</td>
</tr>
</metal:header>
<div metal:define-macro="results">
<metal:results define-macro="results">
<table class="report"
tal:define="showCheckboxes cb_name|nothing">
<tr>
<th tal:condition="showCheckboxes"
style="border: 1px solid grey">
<metal:rows define-macro="rows">
<tr tal:condition="showCheckboxes">
<th style="border: 1px solid grey; width: 5%">
<input type="checkbox" checked
tal:attributes="onclick
string:toggleCheckBoxes(this, '$cb_name:list')" /></th>
<th i18n:translate=""
style="border: 1px solid grey">Task/Action</th>
<th style="border: 1px solid grey"
i18n:translate="">Who?</th>
<th style="border: 1px solid grey"
i18n:translate="">When?</th>
<th style="border: 1px solid grey"
i18n:translate=""></th>
<th colspan="4"
i18n:translate=""
style="border: 1px solid grey">Copy Agenda Items</th>
</tr>
<tal:task repeat="row results">
<tr tal:repeat="colname python: ('title', 'description',)">
<tr>
<td tal:condition="showCheckboxes"
style="border: 1px solid grey">
<input type="checkbox" checked
tal:condition="python:colname == 'title'"
tal:attributes="name string:$cb_name:list;
value row/context/uid" /></td>
<td style="border: 1px solid grey"
tal:define="col report/fields/?colname"
<td colspan="4"
style="border: 1px solid grey"
tal:define="col report/fields/title"
tal:attributes="class col/cssClass">
<metal:column use-macro="python:
reportView.getColumnRenderer(col)" />
</td>
<td style="border: 1px solid grey" />
<td style="border: 1px solid grey" />
<td style="border: 1px solid grey" />
</tr>
<tr tal:repeat="colname python:
('responsible', 'description', 'discussion', 'consequences')">
<tal:field define="col report/fields/?colname">
<td style="border: 1px solid grey"
tal:condition="showCheckboxes"></td>
<td style="border: 1px solid grey; width: 15%"
tal:content="col/title"
i18n:translate=""></td>
<td colspan="3"
style="border: 1px solid grey"
tal:attributes="class col/cssClass">
<metal:column use-macro="python:
reportView.getColumnRenderer(col)" />
</td>
</tal:field>
</tr>
<tr>
<th style="border: 1px solid grey"
tal:condition="showCheckboxes"></th>
<th colspan="2"
style="border: 1px solid grey"
i18n:translate="">header_workitems</th>
<th style="border: 1px solid grey; width: 20%"
i18n:translate="">header_responsible</th>
<th style="border: 1px solid grey; width: 12%"
i18n:translate="">header_deadline</th>
</tr>
<tal:workitems define="col report/fields/workItems">
<metal:column use-macro="python:
reportView.getColumnRenderer(col)" />
</tal:workitems>
</tal:task>
</metal:rows>
</table>
</div>
</metal:results>
<div metal:define-macro="subreport"
<metal:sub define-macro="subreport"
tal:define="results python:col.getValue(row)">
<tr class="listing" tal:repeat="row results">
<td tal:condition="showCheckboxes"
style="border: 1px solid grey" />
<td tal:repeat="col results/displayedColumns"
tal:attributes="class col/cssClass"
tal:attributes="class col/cssClass;
colspan python:
col.name == 'title' and '2' or None"
style="border: 1px solid grey">
<metal:column use-macro="python:
reportView.getColumnRenderer(col)" />
</td>
</tr>
</div>
</metal:sub>
</html>

View file

@ -285,7 +285,7 @@ class MeetingMinutesWork(WorkReportInstance, SubReport):
rowFactory = MeetingMinutesWorkRow
fields = Jeep((workTitle, party, day, state)) #description,
fields = Jeep((workTitle, party, day)) #, state)) #description,
defaultOutputFields = fields
defaultSortCriteria = (day,)
states = ('planned', 'accepted', 'running', 'done',
@ -309,13 +309,20 @@ eventTitle = CalculatedField('eventTitle', u'Event Title',
eventDescription = CalculatedField('eventDescription', u'Event Description',
description=u'',
executionSteps=(['header']))
eventDate = DateField('eventDate', u'Event Date',
description=u'',
format=('date', 'short'),
executionSteps=(['header']))
eventStart = DateField('eventStart', u'Event Start',
description=u'',
format=('dateTime', 'short'),
format=('time', 'short'),
executionSteps=(['header']))
eventEnd = DateField('eventEnd', u'Event End',
description=u'',
format=('dateTime', 'short'),
format=('time', 'short'),
executionSteps=(['header']))
participants = CalculatedField('participants', u'Participants',
description=u'',
executionSteps=(['header']))
taskTitle = UrlField('title', u'Task Title',
description=u'The short description of the task.',
@ -325,6 +332,18 @@ taskDescription = TextField('description', u'Description',
description=u'The long description of the task.',
cssClass='header-2',
executionSteps=['output'])
responsible = TextField('responsible', u'label_responsible',
description=u'Responsible.',
cssClass='header-2',
executionSteps=['output'])
discussion = TextField('discussion', u'label_discussion',
description=u'Discussion.',
cssClass='header-2',
executionSteps=['output'])
consequences = TextField('consequences', u'label_consequences',
description=u'Consequences.',
cssClass='header-2',
executionSteps=['output'])
workItems = SubReportField('workItems', u'Work Items',
description=u'A list of work items belonging to the task.',
reportFactory=MeetingMinutesWork,
@ -345,6 +364,10 @@ class TaskRow(BaseRow):
def eventDescription(self):
return self.event.description
@Lazy
def eventDate(self):
return self.event.start
@Lazy
def eventStart(self):
return self.event.start
@ -353,8 +376,13 @@ class TaskRow(BaseRow):
def eventEnd(self):
return self.event.end
@Lazy
def participants(self):
return self.event.participants
useRowProperty = BaseRow.useRowProperty
attributeHandlers = dict(
eventDate=useRowProperty,
eventStart=useRowProperty,
eventEnd=useRowProperty,
)
@ -367,8 +395,10 @@ class MeetingMinutes(WorkReportInstance):
rowFactory = TaskRow
fields = Jeep((eventTitle, eventStart, eventEnd, eventDescription,
tasks, taskTitle, taskDescription, workItems))
fields = Jeep((eventTitle, eventDate, eventStart, eventEnd,
eventDescription, participants,
tasks, taskTitle, responsible, taskDescription,
discussion, consequences, workItems))
defaultOutputFields = fields
states = ('planned', 'accepted', 'done', 'done_x', 'finished')
taskTypeNames = ('agendaitem',)