Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Color coding cells in a table based on the cell value using Jinja templates

I have a simple flask app and need to display a table of values, with the cell backgrounds colour coded based on the cell value according to thresholds. I'm generating the table content as follows:

  {% block dashboard_table2 %}
      <table>
      {% for row in data %}
          {% for item in row %}
              <td>{{ item }}</td>
          {% endfor %}
      </tr>
      {% endfor %}
      </table>
  {% endblock %}

I tried wrapping the values in style tags like this in Python but it didn't work:

  if int(value) <= 10:
      value = '<p style="background-color:Red">' + value + '</p>'

I'm guessing the CSS for the page is overriding the style attribute. I also tried just setting the text color attribute instead of background-color but no dice. Any suggestions on a good way to do this? I'd like to have a concise way to specify threshold values that aren't hard-coded in the templates.

like image 809
Simon Hibbs Avatar asked Jan 20 '14 17:01

Simon Hibbs


2 Answers

The easiest way would be to put this display logic in your template:

<table>
    {% for row in data %}
    <tr>
        {% for item in row %}
            {% if item <= 10 %}
                <td class="under-limit">{{ item }}</td>
            {% else %}
                <td>{{ item }}</td>
            {% endif %}
        {% endfor %}
    </tr>
    {% endfor %}
</table>

Then, in your CSS you can use:

.under-limit { background-color: red; }
like image 102
Sean Vieira Avatar answered Oct 21 '22 05:10

Sean Vieira


<table>
   {% for row in row %}
       {% if item <= 10 %}
       <tr style ="background-color: red">
           <td> {{ item }} </td>
       </tr>
       {% else %}
       <tr>
           <td> {{ item }} </td>
       </tr>
       {% endif %}
    {% endfor %}
</table>

This works for me.

like image 44
henryjing Avatar answered Oct 21 '22 04:10

henryjing