2D array possible in template?

41 views
Skip to first unread message

Auchtermuchty Weather

unread,
Mar 13, 2021, 6:37:51 AM3/13/21
to weewx-user
I could do with being able to declare a 2D array in my template.  I found the following example in the Cheetah documentation but I can't find how to emulate it in a template:

#from Cheetah.Template import Template
#extends Template

#set $people = [
{'name' : 'Tom', 'mood' : 'Happy'}, 
{'name' : 'Dick', 'mood' : 'Sad'}, 
{'name' : 'Harry', 'mood' : 'Hairy'}
]

<strong>How are you feeling?</strong>
<ul>
    #for $person in $people
        <li>
            $person['name'] is $person['mood']
        </li>
    #end for
</ul>

Michael

unread,
Mar 13, 2021, 7:01:49 AM3/13/21
to weewx-user
I have solved it in the following way:

#set $archive_data = [($day, $day(data_binding='sdr_binding'), $day(data_binding='sdr2_binding')), ($week, $week(data_binding='sdr_binding'), $week(data_binding='sdr2_binding')), ($month, $month(data_binding='sdr_binding'), $month(data_binding='sdr2_binding')), ($year, $year(data_binding='sdr_binding'), $year(data_binding='sdr2_binding'))]

....

        <tr>
          <td class="label">$obs.label.outTemp</td>
          <td class="units">$unit.label.outTemp</td>
          #for $archive in $archive_data
          <td class="data new_row">$archive[0].outTemp.max.format(add_label=False)<br/>
            <span class="timestamp">$archive[0].outTemp.maxtime</span><br/>
            $archive[0].outTemp.min.format(add_label=False)<br/>
            <span class="timestamp">$archive[0].outTemp.mintime</span>
          </td>
          #end for
        </tr>

        <tr>
          <td class="label">$obs.label.extraTemp6</td>
          <td class="units">$unit.label.extraTemp6</td>
          #for $archive in $archive_data
          <td class="data new_row">
            $archive[1].extraTemp6.max.format(add_label=False)<br/>
            <span class="timestamp">$archive[1].extraTemp6.maxtime</span><br/>
            $archive[1].extraTemp6.min.format(add_label=False)<br/>
            <span class="timestamp">$archive[1].extraTemp6.mintime</span>
          </td>
          #end for
        </tr>
 

gjr80

unread,
Mar 13, 2021, 7:05:44 AM3/13/21
to weewx-user
What exactly is your problem? Works fine for me:

<strong>How are you feeling?</strong>
<ul>
        <li>
            Tom is Happy
        </li>
        <li>
            Dick is Sad
        </li>
        <li>
            Harry is Hairy
        </li>
</ul>


Gary

Auchtermuchty Weather

unread,
Mar 13, 2021, 8:47:04 AM3/13/21
to weewx-user
I was struggling to declare on in a .inc file but it's sorted now using all square brackets.

#set $Items = [
[''Tom', 'Happy'}, 
['Dick', 'Sad'}, 
['Harry', 'Hairy'}
]

Reply all
Reply to author
Forward
0 new messages