[views] Rename ScoreValue table view and add in-context ScoreValue TableView (related to #3323338)
authorVladimir Popescu <vladimir.popescu@logilab.fr>
Mon, 20 Jan 2014 11:48:44 +0000
changeset 632 67122faaf6f3
parent 631 06368232fa3e
child 633 dc13d1bf2681
[views] Rename ScoreValue table view and add in-context ScoreValue TableView (related to #3323338)
views/primary.py
views/tableviews.py
--- a/views/primary.py	Mon Jan 20 11:41:32 2014 +0000
+++ b/views/primary.py	Mon Jan 20 11:48:44 2014 +0000
@@ -582,7 +582,7 @@
                                        {'e': entity.eid})
         if scores_rset:
             self.w(u'<h3>%s</h3>' % self._cw._('Scores'))
-            self.wview('scorevalue-table-view', rset=scores_rset)
+            self.wview('scorevalue-outofcontext-table-view', rset=scores_rset)
 
 
 ###############################################################################
--- a/views/tableviews.py	Mon Jan 20 11:41:32 2014 +0000
+++ b/views/tableviews.py	Mon Jan 20 11:48:44 2014 +0000
@@ -18,7 +18,8 @@
 
 """cubicweb-brainomics views/forms/actions/components for web ui"""
 from cubicweb.selectors import is_instance
-from cubicweb.web.views.tableview import TableLayout, EntityTableView, RelationColRenderer
+from cubicweb.web.views.tableview import (TableLayout, EntityTableView,
+                                          RelationColRenderer, EntityTableColRenderer)
 
 
 ###############################################################################
@@ -98,14 +99,38 @@
 ###############################################################################
 ### SCORE GROUP ###############################################################
 ###############################################################################
-class ScoreValueTableView(EntityTableView):
+class ScoreValueOutofContextTableView(EntityTableView):
     __select__ = EntityTableView.__select__ & is_instance('ScoreValue')
-    __regid__ = 'scorevalue-table-view'
+    __regid__ = 'scorevalue-outofcontext-table-view'
 
     columns = ['definition', 'text', 'value']
     column_renderers = {'definition': RelationColRenderer(role='subject')}
 
 
+class ScoreValueInContextTableView(EntityTableView):
+    __select__ = EntityTableView.__select__ & is_instance('ScoreValue')
+    __regid__ = 'scorevalue-incontext-table-view'
+
+    def render_value(w, entity):
+        w(u'<ul>%s</ul>' % entity.complete_value)
+
+    def render_datetime(w, entity):
+        w(u'<ul>%s</ul>' % (entity.datetime or u'-'))
+
+    def render_target(w, entity):
+        if entity.reverse_related_infos:
+            w(u'<ul>%s</ul>' % ''.join(u'<li>%s</li>' % e.view('incontext') for
+                                       e in entity.reverse_related_infos))
+        elif entity.measure:
+            w(u'<ul>%s</ul>' % ''.join(u'<li>%s</li>' % m.concerns[0].view('incontext')
+                                       for m in entity.measure))
+
+    columns = ['subject', 'value', 'datetime']
+    column_renderers = {'datetime': EntityTableColRenderer(renderfunc=render_datetime),
+                        'subject': EntityTableColRenderer(renderfunc=render_target),
+                        'value': EntityTableColRenderer(renderfunc=render_value)}
+
+
 ###############################################################################
 ### DRUG TAKES ################################################################
 ###############################################################################