We started using Agilo a few months ago and have just started our 3rd sprint. It is working well for us. The one thing that we wanted was to have a better look at how team members were doing with their commitments during the sprint. Our dev lead created a report sql query that the team now relies on. I though others may like to use it too. I think it only works with Postgres though.
<https://lh6.googleusercontent.com/-jyLdWm0oBF0/T6LmlXn-MnI/AAAAAAAAFOU/TpFOv-YrnI4/s1600/sample_report.png> Hope you find it useful Steve Just create a new report with the sql below; select ( CASE WHEN (remaining_capacity.time_remaining = 0) THEN 'background: PaleGreen;' WHEN round((remaining_commitment.time_remaining /remaining_capacity.time_remaining)::numeric,2) < .95 THEN 'background: LightGoldenRodYellow;' WHEN round((remaining_commitment.time_remaining /remaining_capacity.time_remaining)::numeric,2) < 1.05 THEN 'background: PaleGreen;' ELSE 'background: Pink;' END) as __style__, remaining_commitment.team_member as "Team Member", round(remaining_capacity.time_remaining::numeric,2) as "Capacity remaining (hours)", round(remaining_commitment.time_remaining::numeric,2) as "Commitment Remaining (hours)", round((remaining_capacity.time_remaining - remaining_commitment.time_remaining)::numeric,2) as "Hours Remaining", CASE WHEN (remaining_capacity.time_remaining = 0) THEN 1.00 ELSE round((remaining_commitment.time_remaining /remaining_capacity.time_remaining)::numeric,2) END as Load from ( SELECT ticket."owner" as team_member, sum(ticket_custom."value"::real) as time_remaining FROM public.ticket join ticket_custom on public.ticket.id = ticket_custom.ticket and ticket_custom."name" = 'remaining_time' and ticket_custom."value" <> '' and ticket_custom.ticket in (select ticket from ticket_custom where ticket_custom."name" = 'sprint' and ticket_custom."value" = (select "name" from agilo_sprint where current_date between (timestamp with time zone 'epoch' + "start" * interval '1 second')::date and (timestamp with time zone 'epoch' + sprint_end * interval '1 second')::date) and ticket.type in ('task','bug') ) GROUP by team_member ) as remaining_commitment left join (select sprint_data.interation_name, agilo_team_member."name" as team_member, sum( (case when exception_dates.hours is not null then exception_dates.hours when extract(DOW from dates.a) = 1 then agilo_team_member.ts_mon when extract(DOW from dates.a) = 2 then agilo_team_member.ts_tue when extract(DOW from dates.a) = 3 then agilo_team_member.ts_wed when extract(DOW from dates.a) = 4 then agilo_team_member.ts_thu when extract(DOW from dates.a) = 5 then agilo_team_member.ts_fri when extract(DOW from dates.a) = 6 then agilo_team_member.ts_sat when extract(DOW from dates.a) = 7 then agilo_team_member.ts_sun else 0 end) * (case when (dates.a = current_date) and (current_time between '09:00:00'::time and '17:00:00'::time) then 1 - (extract(EPOCH from current_timestamp) - extract(EPOCH from current_date + '09:00:00'::time))/(extract(EPOCH from current_date + '17:00:00'::time) - extract(EPOCH from current_date + '09:00:00'::time)) else 1 end) ) as time_remaining from generate_series(current_date, current_date+50,'1 day') as dates(a) join (select (timestamp with time zone 'epoch' + "start" * interval '1 second')::date as sprint_start_date, (timestamp with time zone 'epoch' + sprint_end * interval '1 second')::date as sprint_end_date, team, "name" as interation_name from agilo_sprint where current_date between (timestamp with time zone 'epoch' + "start" * interval '1 second')::date and (timestamp with time zone 'epoch' + sprint_end * interval '1 second')::date) as sprint_data on dates.a between sprint_data.sprint_start_date and sprint_data.sprint_end_date join agilo_team_member on agilo_team_member.team = sprint_data.team left join (select teammember, '0001-01-01'::date + date -1 as real_date, hours FROM agilo_calendar_entry) as exception_dates on exception_dates.teammember = agilo_team_member."name" and exception_dates.real_date = dates.a::date group by sprint_data.interation_name, agilo_team_member."name") as remaining_capacity on remaining_capacity.team_member = remaining_commitment.team_member order by remaining_commitment.team_member -- Follow Agilo on Twitter: http://twitter.com/agilofortrac Please support us by reviewing and voting on: http://userstories.com/products/8-agilo-for-scrum http://ohloh.net/p/agilo-trac http://freshmeat.net/projects/agiloforscrum You have received this message because you are subscribed to the "Agilo for Trac" Google Group. This group is focused on supporting Agilo for Trac users and is moderated by Agilo Software GmbH <http://www.agilosoftware.com>. To post to this group, send email to [email protected] To unsubscribe from this group, send an email to [email protected] For more options, visit this group at http://groups.google.com/group/agilo

