Roundup Tracker - Issues

Issue 2551359

Add issue activity sparkline for index pages.
Type: rfe Severity: normal
Components: Web interface Versions:
Status: new
: : rouilj
Priority: : StarterTicket

Created on 2024-06-20 20:05 by rouilj, last changed 2024-06-20 20:05 by rouilj.

msg8094 Author: [hidden] (rouilj) Date: 2024-06-20 20:05
To provide a quick indication of ticket activity, implement sparklines
in the index page for issues. "Activity" could be changes that adds a message
(or sends a nosy notification) so it would be an indication of interactions. It
could be any change to the issue (e.g. change status or title) even if it doesn't
result in a nosy message. Which is more useful is open to testing and debate.

Add a checkbox to the page to enable an activity sparkline column
in issue.index.html. It could be a fixed duration and number of segments. But supporting
selection/setting of total duration/time and bucketing time (number of segments)
using a duration in a text input or a select box would be nice.

Use cases a sparkline over:

  the last week period with 7 segments (day bucket),
  the last 4 month period with 16 segments (week bucket),
  the last 1 month period with 28 buckets (day period),
  even the last 1 day (24 hours) period with 24 segments (hour bucket), or
  maybe one over the life of the ticket with a duration calculated to provide 30 or
    so segments of reasonable width (24 hours not 23 hours, 1 week not 5.5 days).

Probably will have to limit the number of buckets to some sensible number so the sparkline
isn't too long. Also how many levels to represent (y axis) is TBD. Probably a max of 10
height levels is reasonable. At that point the sparkline could look continuous rather than
discrete (with steps) given its height.

I envision adding a utils.sparkline(id, period_duration,bucket_duration) to be called from the 
templating language that generates a small svg or unicode character sparkline. It could
also be a new method for the Hyperdb item wrapper. Adding it to the wrapper might make it 
easier to use as tal:content="python:i.sparkline('1w','1d')" where i is an iterator
variable over request/batch.

Date User Action Args
2024-06-20 20:05:32rouiljcreate