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 sft = self.adapted.showFeedbackText
return sft is None and True or sft 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): def getTeamData(self, respManager):
#result = [myResponse] #result = [myResponse]
result = [] result = []
@ -117,10 +133,10 @@ class SurveyView(ConceptView):
result = [dict(category=r['group'].title, text=r['feedback'].text, result = [dict(category=r['group'].title, text=r['feedback'].text,
score=int(round(r['score'] * 100)), rank=r['rank']) score=int(round(r['score'] * 100)), rank=r['rank'])
for r in values] for r in values]
if self.adapted.showTeamResults: if self.showTeamResults:
teamData = self.getTeamData(respManager) teamData = self.getTeamData(respManager)
values = response.getTeamResult(values, teamData) teamValues = response.getTeamResult(values, teamData)
for idx, r in enumerate(values): for idx, r in enumerate(teamValues):
result[idx]['average'] = int(round(r['average'] * 100)) result[idx]['average'] = int(round(r['average'] * 100))
result[idx]['teamRank'] = r['rank'] result[idx]['teamRank'] = r['rank']
return result return result

View file

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

View file

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

Binary file not shown.

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: 0.13.0\n" "Project-Id-Version: 0.13.0\n"
"POT-Creation-Date: 2007-05-22 12:00 CET\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" "Last-Translator: Helmut Merz <helmutm@cy55.de>\n"
"Language-Team: loops developers <helmutm@cy55.de>\n" "Language-Team: loops developers <helmutm@cy55.de>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -266,10 +266,10 @@ msgid "Obligatory question, must be answered"
msgstr "Pflichtfrage, muss beantwortet werden" msgstr "Pflichtfrage, muss beantwortet werden"
msgid "Score" msgid "Score"
msgstr "Bewertung" msgstr "Ergebnis %"
msgid "Team Score" msgid "Team Score"
msgstr "Durchschnitt Team" msgstr "Durchschnitt Team %"
msgid "Rank" msgid "Rank"
msgstr "Rang" msgstr "Rang"