Opened 9 years ago

Closed 9 years ago

#12162 closed (invalid)

cycle should have an option to call value without actually cycling

Reported by: kace7@… Owned by: nobody
Component: Template system Version: 1.1
Severity: Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Alex Gaynor)

Hear me out. :) My use case is this: I have a large table, I have already ordered the objects that will make up each row according to a certain key attribute. What I would like to do is use the 'cycle' tag together with the 'ifchanged' tag to change the bg-color of the rows only when this key attribute has changed. E.g.:

(blue) New Mexico John ...
(blue) New Mexico Jill ...
(blue) New Mexico Jeff ...
(green) Texas Jack ...
(green) Texas Jane ...
(blue) Arizona James ...

But, it just can't be done (in the template) as things stand. Every access of the 'cycle' tag (whether named or not) gives the next value in the cycle. I propose an alternate tag that picks up the cycle variable without changing it from its last appearance. Then code like this ought to be able to accomplish the task:

{% ifchanged state %}
  <tr style="background:{% cycle 'blue' 'green' as rowbg %};">
{% else %}
  <tr style="background:{% dontcycle rowbg %};">
{% endifchanged %}

I really believe this is a legitimate presentation task. Thanks for your consideration. K.C.S.

Change History (2)

comment:1 Changed 9 years ago by Alex Gaynor

Description: modified (diff)

Please use preview.

comment:2 Changed 9 years ago by Russell Keith-Magee

Resolution: invalid
Status: newclosed

This is already possible

{% ifchanged state %}
  <tr style="background:{% cycle 'blue' 'green' as rowbg %};">
{% else %}
  <tr style="background:{{ rowbg }};">
{% endifchanged %}
Note: See TracTickets for help on using tickets.
Back to Top