caktus / django-timepiece

A multi-user Django application for tracking people's time on projects.
MIT License
361 stars 115 forks source link

Project report planning -- Reference Only for now #371

Open sarahdooley opened 12 years ago

sarahdooley commented 12 years ago

Come up with some ideas / mockups for a new report that would show the following for a current contract:

-For the current week, hours assigned and hours worked per person -A way to view past weeks -A graph(?) of total spent hours over time for the project -Percent of the contract hours worked

The main purpose would be for anyone on a project to easily understand its status (for example, for a team lead to see how many hours different team members have left for the week). If there are any other features you think would be helpful, feel free to suggest.

This should at least be available to everyone who is assigned to a given project (I don't see any reason not to have them all be available to everyone).

A related question is where this should live within Timepiece / how people would navigate to it--thoughts?

omarestrella commented 12 years ago

This sounds like an extension of the current work being done for Project Hours, at least a visualization component of it.

I believe that the view can contain the same calendar filter that we are currently using for Project Hours. That way, you can filter by any date that you choose.

If we want to include a graph, we can use Rickshaw or NVD3 (more info). It can be a simple line chart, burning down through hours (x: date, y: hours left)

Would we also want to include a table of the data? To show the number of hours an individual used/have available to use?

As for the navigation, since its similar to project hours, we can add a link to that dropdown. Or we can put it in the reports dropdown. I dont really have a preference.

sarahdooley commented 12 years ago

Yep, this would be drawing on the Project Hours.

Would we also want to include a table of the data? To show the number of hours an individual used/have available to use?

Yes, we would want something showing that breakdown per person for the week. I would envision it as maybe a bar chart / progress bar for each person, but am open to other ideas.

sarahdooley commented 12 years ago

[Suggestion from Omar for "-A graph(?) of total spent hours over time for the project": use a burndown chart. Have two lines for hours worked vs hours scheduled (or estimated?). Would need to be able to go below zero if needed for a project...]

omarestrella commented 12 years ago

To continue on with what you said, @sarahdooley: I believe that the burndown chart is the correct way to display the data. As an example, you can see this chart from one of my school projects (y-axis: hours, x-axis: days). There is a lot going on, but the green and yellow lines show what would be most interesting: estimated time for a project (using Project Hours) and actual time spent (using Entries). Any actual time spent below zero (going over the estimate), should appear in a different color (bright red?) to clearly distinguish from the actual hours worked vs overtime.

Interface

As far as the interface for the feature goes, I think that it is best represented by the same UI as the Billable Hours feature. Filters on the left side and chart on the right, where the filters can only select one project at a time and a single month at a time. Any more than that and the chart can become rather overwhelming.

The idea used for the Dashboard, where the hours a person has for a project for a given week are shown in a horizontal bar chart, can be reused here. It could show the people that are working/have worked on the project and the hours used out of the ones they were given/planned. If we decide to go with the bar chart on the dashboard and its implemented as a reusable component, I dont see why it shouldnt be used here.

Misc.

There shouldnt be any changes done to Project Hours in order to make this work and I imagine that the work will not be much, since we can piggyback on the work there. Data should just need to be gathered, manipulated, and sent to the frontend in a nice manner, similar to hour billable hours is currently doing it.