radekstepan / burnchart

GitHub Burndown Chart as a Service
https://burnchart.netlify.app
GNU Affero General Public License v3.0
246 stars 50 forks source link

Support GitHub projects in addition to milestones #129

Open danvk opened 6 years ago

danvk commented 6 years ago

I'd like to create a burndown chart for a GitHub Project (rather than a milestone). There is a projects API which is currently in preview.

Great tool!

radekstepan commented 6 years ago

Thanks!

If you click on the project's name after adding it, it will show a chart for all its milestones, eg http://radekstepan.com/burnchart/#!/rails/rails, would this work?

danvk commented 6 years ago

"Project" is a confusing term—I'm referring here to the Kanban-style boards feature of GitHub, e.g. https://github.com/twbs/bootstrap/projects/14

danvk commented 6 years ago

Here's a GraphQL query which returns all the issues in a Project along with their labels:

query { 
  repository(owner:"twbs", name:"bootstrap"){
    project(number: 14) {
      columns(first: 10) {
        nodes {
          name
          cards(first: 100) {
            nodes {
              id
              note
              state
              content {
                ... on Issue {
                  title
                  labels(first:10) {
                    nodes {
                      name
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

You can try it out in the GitHub GraphQL API Explorer.

radekstepan commented 6 years ago

Ah I get it now. Yes, as GitHub is moving towards projects (rather than milestones) it would be useful to use this, but as for my developer time it is unlikely going to get done this Summer. I can provide pointers to the codebase if anyone else would like to chip in however.

danvk commented 6 years ago

Sure, pointers would be appreciated.

On Fri, Jun 8, 2018 at 6:46 AM Radek Stepan notifications@github.com wrote:

Ah I get it now. Yes, as GitHub is moving towards projects (rather than milestones) it would be useful to use this, but as for my developer time it is unlikely going to get done this Summer. I can provide pointers to the codebase if anyone else would like to chip in however.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/radekstepan/burnchart/issues/129#issuecomment-395724136, or mute the thread https://github.com/notifications/unsubscribe-auth/AAF__V8NGBNKCLKvt27UcYnO60FK4igwks5t6lYPgaJpZM4UZiNz .

radekstepan commented 6 years ago

Perfect, so currently we are using Superagent to make the requests to fetch data: all/one milestone and issues associated with them/it:

https://github.com/radekstepan/burnchart/blob/master/src/js/modules/github/request.js#L58-L92

Here is the module that fetches the issues and processes them:

https://github.com/radekstepan/burnchart/blob/master/src/js/modules/github/issues.js

You have to pick a new route for the projects, something like /:owner/:name/project/:project perhaps?

https://github.com/radekstepan/burnchart/blob/master/src/js/App.jsx

If you create a PR that has the new routing and a module that requests the issues in a project (GraphQL) I can do the rest.

Hope it helps!

danvk commented 6 years ago

@radekstepan I believe I've written all the code you requested. Let me know if you need anything else! https://github.com/radekstepan/burnchart/pull/130

radekstepan commented 6 years ago

Perfect, thanks @danvk I'll work on this towards the end of this week.

danvk commented 6 years ago

Hi @radekstepan, just wanted to check in on this.

radekstepan commented 6 years ago

Hi @danvk, started work on this yesterday and will continue working on it today. I have some contractors working at my place so work is proving to be a bit slow at the moment.

danvk commented 6 years ago

Potential problem! I don't think you can figure out when a card/issue has been moved between columns using the GitHub API :/

https://stackoverflow.com/questions/51294279/how-can-i-see-that-an-issue-has-been-moved-between-columns-in-a-project-using-th

radekstepan commented 6 years ago

That's OK no? You can determine a progress through a Project by counting the number of open/closed tickets regardless of the column/swimlane they are on.

danvk commented 6 years ago

Ideally I'd want the burndown chart to track columns. It'd be like this progress bar from GitHub project boards, only rotated and stretched over time: image

Additionally I don't believe you can track when an issue is added to / removed from a project board. So if a sprint gets upscoped or downscoped, you won't be able to track that. (There's no equivalent of "milestoned" and "unmilestoned" events on issue timelines.)

radekstepan commented 6 years ago

I see. Yes, it would be cool to visually see the different columns in a project and track it over time, right now a ticket is either to do and done and that's it.

Let me know if you come up with a way to parse out the individual column the ticket is on. It wouldn't be that difficult to then add that information into the bar chart in the table next to each project.