specify columns of feedback table on questionnaire edit form

This commit is contained in:
Helmut Merz 2014-05-25 10:37:43 +02:00
parent 6ff8e8211a
commit cb2ac10524
5 changed files with 41 additions and 41 deletions

View file

@ -60,6 +60,22 @@ class SurveyView(ConceptView):
sft = self.adapted.showFeedbackText
return sft is None and True or sft
@Lazy
def feedbackColumns(self):
cols = self.adapted.feedbackColumns
if not cols:
cols = [
dict(name='text', label=u'Response'),
dict(name='score', label=u'Score')]
return cols
@Lazy
def showTeamResults(self):
for c in self.feedbackColumns:
if c['name'] in ('average', 'teamRank'):
return True
return False
def getTeamData(self, respManager):
#result = [myResponse]
result = []
@ -117,10 +133,10 @@ class SurveyView(ConceptView):
result = [dict(category=r['group'].title, text=r['feedback'].text,
score=int(round(r['score'] * 100)), rank=r['rank'])
for r in values]
if self.adapted.showTeamResults:
if self.showTeamResults:
teamData = self.getTeamData(respManager)
values = response.getTeamResult(values, teamData)
for idx, r in enumerate(values):
teamValues = response.getTeamResult(values, teamData)
for idx, r in enumerate(teamValues):
result[idx]['average'] = int(round(r['average'] * 100))
result[idx]['teamRank'] = r['rank']
return result

View file

@ -23,6 +23,7 @@ Interfaces for surveys used in knowledge management.
from zope.interface import Interface, Attribute
from zope import interface, component, schema
from cybertools.composer.schema.grid.interfaces import Records
from cybertools.knowledge.survey import interfaces
from loops.interfaces import IConceptSchema, ILoopsAdapter
from loops.util import _
@ -38,19 +39,16 @@ class IQuestionnaire(IConceptSchema, interfaces.IQuestionnaire):
default=4,
required=True)
showFeedbackText = schema.Bool(
title=_(u'Show Feedback Text'),
description=_(u'If not set no feedback text will be shown on '
u'the results page.'),
default=True,
feedbackColumns = Records(
title=_(u'Feedback Columns'),
description=_(u'Column definitions for the results table '
u'on the feedback page.'),
default=[],
required=False)
showTeamResults = schema.Bool(
title=_(u'Show Team Results'),
description=_(u'If set the team-related columns will be shown on '
u'the results page.'),
default=False,
required=False)
feedbackColumns.column_types = [
schema.Text(__name__='name', title=u'Column Name',),
schema.Text(__name__='label', title=u'Column Label'),]
feedbackHeader = schema.Text(
title=_(u'Feedback Header'),

View file

@ -18,33 +18,19 @@
<table class="listing">
<tr>
<th i18n:translate="">Category</th>
<th tal:condition="item/showFeedbackText"
i18n:translate="">Response</th>
<th class="center"
i18n:translate="">Score</th>
<th class="center"
i18n:translate="">Rank</th>
<tal:team condition="item/adapted/showTeamResults">
<th class="center"
i18n:translate="">Team Score</th>
<th class="center"
i18n:translate="">Team Rank</th>
</tal:team>
<th tal:repeat="col item/feedbackColumns"
i18n:translate=""
tal:attributes="class python:
col['name'] != 'text' and 'center' or None"
tal:content="col/label" />
</tr>
<tr tal:repeat="fbitem feedback">
<td tal:content="fbitem/category" />
<td tal:condition="item/showFeedbackText"
tal:content="fbitem/text" />
<td class="center"
tal:content="fbitem/score" />
<td class="center"
tal:content="fbitem/rank" />
<tal:team condition="item/adapted/showTeamResults">
<td class="center"
tal:content="fbitem/average" />
<td class="center"
tal:content="fbitem/teamRank" />
</tal:team>
<tal:cols repeat="col item/feedbackColumns">
<td tal:define="name col/name"
tal:attributes="class python:name != 'text' and 'center' or None"
tal:content="fbitem/?name" />
</tal:cols>
</tr>
</table>
<div class="button" id="show_questionnaire">

Binary file not shown.

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: 0.13.0\n"
"POT-Creation-Date: 2007-05-22 12:00 CET\n"
"PO-Revision-Date: 2014-05-24 12:00 CET\n"
"PO-Revision-Date: 2014-05-25 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"
@ -266,10 +266,10 @@ msgid "Obligatory question, must be answered"
msgstr "Pflichtfrage, muss beantwortet werden"
msgid "Score"
msgstr "Bewertung"
msgstr "Ergebnis %"
msgid "Team Score"
msgstr "Durchschnitt Team"
msgstr "Durchschnitt Team %"
msgid "Rank"
msgstr "Rang"