views:

287

answers:

2

Hi - I'm building a basic app to track progress of projects through db. When the project is first created, it saves the created_at timestamp (yes, it's rails), and the user can then update the following fields:

  • status (choose from 'in progress', 'frozen', 'done' or 'scratched')
  • priority ('none', 'minor', 'major')
  • days (the estimate, in days, of how long the project will take)
  • title and description (not too relevant to calculation, but anyway)

When any updates are made to this project, the updated_at timestamp is changed to the current date/time. I want to display a snazzy progress bar, and was looking for ideas on how I might tackle the actual percentage calculation based on the existing parameters. One obvious thing will be to return 100% if status == 'done', but otherwise I'm interested in any exciting ideas that people can brainstorm. thanks!

+1  A: 

Maybe evidence based scheduling ? ;) http://www.joelonsoftware.com/items/2007/10/26.html

RnR
good call - I've added milestone for each project, which will help me calculate the estimated progress - thanks!
sa125
+1  A: 

It might be better to display icons rather than a progress percentage bar just because if the estimate changes up or down over the course of the project you will find your percentages bouncing around accordingly.

If you were to stick to the progress bar theme though I would suggest just using the difference between the updated and start dates combined with the estimate to calculate how many percent you are through the project, though obviously thats a fairly standard and dull way of doing things.

If you wanted to jazz up the progress bar though you could adorn it according to the project status so for projects that have overrun, days(updated_date - created_date) > days_estimate, you could have flames coming out of the end of the bar and perhaps an image of a devil waving a pitchfork then icicles for frozen projects etcetc...

mfdoran
Nice. Since I'm creating this app for my workplace, I'm free to abuse people with icons and stuff :)
sa125