mirror of
https://github.com/status-im/burnchart.git
synced 2025-02-03 06:13:40 +00:00
coverage for lines, reorg todo tasks
This commit is contained in:
parent
01589751ca
commit
35b1f1ed60
3
Makefile
3
Makefile
@ -18,7 +18,8 @@ watch-js:
|
|||||||
|
|
||||||
# Watch the styles.
|
# Watch the styles.
|
||||||
watch-css:
|
watch-css:
|
||||||
$(GRUNT) watch
|
$(GRUNT) css # first build
|
||||||
|
$(GRUNT) watch # then watch
|
||||||
|
|
||||||
# Serve locally.
|
# Serve locally.
|
||||||
serve:
|
serve:
|
||||||
|
83
README.md
83
README.md
@ -1,3 +1,5 @@
|
|||||||
|
*Existing users: The url mapping has been preserved from the original app, we are just using a different domain. If you'd like to use the previous version(s), grab the tags `v1`, `v2`.*
|
||||||
|
|
||||||
#burnchart
|
#burnchart
|
||||||
|
|
||||||
GitHub Burndown Chart as a service. Answers the question "are my projects on track"?
|
GitHub Burndown Chart as a service. Answers the question "are my projects on track"?
|
||||||
@ -8,3 +10,84 @@ GitHub Burndown Chart as a service. Answers the question "are my projects on tra
|
|||||||
[![License](http://img.shields.io/badge/license-AGPL--3.0-red.svg?style=flat)](LICENSE)
|
[![License](http://img.shields.io/badge/license-AGPL--3.0-red.svg?style=flat)](LICENSE)
|
||||||
|
|
||||||
![image](https://raw.githubusercontent.com/radekstepan/burnchart/assembly/public/screenshots.jpg)
|
![image](https://raw.githubusercontent.com/radekstepan/burnchart/assembly/public/screenshots.jpg)
|
||||||
|
|
||||||
|
##Features
|
||||||
|
|
||||||
|
1. Running from the browser, apart from GitHub account sign in.
|
||||||
|
1. Private repos; sign in with your GitHub account.
|
||||||
|
1. Store projects in browser's `localStorage`.
|
||||||
|
1. Off days; specify which days of the week to leave out from ideal burndown progression line.
|
||||||
|
1. Trend line; to see if you can make it to the deadline at this pace.
|
||||||
|
1. Different point counting strategies; select from 1 issues = 1 point or read size from issue label.
|
||||||
|
|
||||||
|
##Configuration
|
||||||
|
|
||||||
|
At the moment, there is no ui exposed to change the app settings. You have to edit the `src/models/config.coffee` file.
|
||||||
|
|
||||||
|
An array of days when we are not working where Monday = 1. The ideal progression line won't *drop* on these days.
|
||||||
|
|
||||||
|
```coffeescript
|
||||||
|
"off_days": [ ]
|
||||||
|
```
|
||||||
|
|
||||||
|
Choose from `ONE_SIZE` which means each issue is worth 1 point or `LABELS` where issue labels determine its size.
|
||||||
|
|
||||||
|
```coffeescript
|
||||||
|
"points": "ONE_SIZE"
|
||||||
|
```
|
||||||
|
|
||||||
|
If you specify `LABELS` above, here is the place set the regex used to parse the number out of a label. When multiple matching size labels exist, their sum is taken.
|
||||||
|
|
||||||
|
```coffeescript
|
||||||
|
"size_label": /^size (\d+)$/
|
||||||
|
```
|
||||||
|
|
||||||
|
##Build
|
||||||
|
|
||||||
|
The app is built using [Node](http://nodejs.org/). To install dev dependencies:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make install
|
||||||
|
```
|
||||||
|
|
||||||
|
###Development
|
||||||
|
|
||||||
|
To create an unminified package with source maps for debugging:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make watch
|
||||||
|
```
|
||||||
|
|
||||||
|
You can then start a local http server with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make serve
|
||||||
|
```
|
||||||
|
|
||||||
|
To test your changes run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make test
|
||||||
|
```
|
||||||
|
|
||||||
|
And finally for code coverage:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make coverage
|
||||||
|
```
|
||||||
|
|
||||||
|
There is currently a bug that incorrectly shows code coverage (using [blanket.js](http://blanketjs.org/)) for modules that are loaded using [proxyquire](https://github.com/thlorenz/proxyquire).
|
||||||
|
|
||||||
|
###Production
|
||||||
|
|
||||||
|
To make a minified package for production:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make build
|
||||||
|
```
|
||||||
|
|
||||||
|
You can then publish the contents of the `public` folder to `gh-pages` branch with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make publish
|
||||||
|
```
|
File diff suppressed because one or more lines are too long
140
docs/TODO.md
140
docs/TODO.md
@ -1,89 +1,55 @@
|
|||||||
#Tasks to do
|
|
||||||
|
|
||||||
- [ ] create notes about how original people can upgrade to burnchart
|
|
||||||
- [ ] clean up docs, track them on git or using Assembly system?
|
|
||||||
- [ ] check with austin@assembly.com if my repo looks good to be forked to Assembly
|
|
||||||
- [ ] fork it to Assembly
|
|
||||||
- [ ] landing page for the project and put message on `github-burndown-chart` repo
|
|
||||||
- [ ] provide a documentation site (because we ref it from hero)
|
|
||||||
- [ ] track users/make it easy for people to leave feedback
|
|
||||||
|
|
||||||
##Next Release
|
|
||||||
|
|
||||||
- [ ] http://burnchart.io#rails I would expect it to list all the projects for that owner so I can select one of them (Ryan); we could show a list of available project names with their: `description`, `private` flag and `has_issues` making the project greyed out if no issues found
|
|
||||||
|
|
||||||
##Backlog
|
##Backlog
|
||||||
|
|
||||||
- [ ] coverage using `blanket` does not work in tests that `proxyquire`
|
###Important
|
||||||
- [ ] highlight today in the chart better
|
|
||||||
- [ ] one click to go from a project or milestone view to github
|
- [ ] 3 `rails/rails/24` has issues in two clusters as if merged from two milestones, does it mean that sort by date is not working?
|
||||||
- [ ] be able to specify milestone by name (will nicely show in title)
|
- [ ] 4 http://burnchart.io#rails I would expect it to list all the projects for that owner so I can select one of them (Ryan); we could show a list of available project names with their: `description`, `private` flag and `has_issues` making the project greyed out if no issues found, cache these projects in local storage
|
||||||
- [ ] focus on form fields style (blue outline etc)
|
- [ ] 4 if all issue circles in the chart are close to each other, make a "master circle" that amalgamates all the issues into one large circle, makes for a prettier view
|
||||||
- [ ] switch off `user-select` on buttons
|
- [ ] 4 until GH fix milestone start date then provide an option to specify it; for example a text like this: `starts: 09-10-2014` in the description which we provide regex for in the config
|
||||||
- [ ] make async pages transition so that there is no "jumping" on the page
|
- [ ] 5 be able to config options through ui that currently have to be hardcoded in the config
|
||||||
- [ ] index page alert tooltip (like on chart page)
|
- [ ] 5 be able to delete added projects; on the project page listing all milestone, enable the cog at the bottom of the table, clicking it slides a link with a dustbin next to it which deletes the project
|
||||||
- [ ] app icon like http://thenounproject.com/term/fire/50966/
|
- [ ] 3 dates not parsing well with timezones, see ideal lines test file
|
||||||
- [ ] tell people if they have no due date
|
|
||||||
- [ ] calculate left margin based on the total number of points text width
|
###Normal
|
||||||
- [ ] responsive layout
|
|
||||||
- [ ] show project name on the milestone page, in the title
|
- [ ] 1 highlight today in the chart better, perhaps just a red line and a text next to it saying what date it is
|
||||||
- [ ] conctact the people that have starred the original burndown chart telling them about the repo; keep track of connects via a tiny crm/spreadsheet and use a custom email address like radek@burnchart.io
|
- [ ] 1 one click to go from a project or milestone view to github; have an icon in the header
|
||||||
- [ ] html entities (like & at the bottom of the page) are not being rendered correctly; {{{}}} ?
|
- [ ] 1 use tap plugin for `Ractive` so we work on mobile
|
||||||
- [ ] `rails/rails/24` has issues in two clusters as if merged from two milestones
|
- [ ] 2 show project name on the milestone page, in the title so that we immediately know where we are
|
||||||
- [ ] trendline cutting into axes
|
- [ ] 2 focus on form fields style (blue outline etc) and switch off `user-select` on buttons
|
||||||
- [ ] topbar messages set position from `top`, does not work when we have scrolled on the page; show sticky to the top and move with our scroll; at the very least make them show up at the top and not be hidden
|
- [ ] 2 be able to logout, add an icon next to the name with arrow leading out of the square
|
||||||
- [ ] GitHub Pages 404 file
|
- [ ] 4 make better x-axis date display, otherwise we see all 1s, basically show better bands, choose per week or per month where appropriate
|
||||||
- [ ] deal with Firebase timing out, are we still logged-in?
|
- [ ] 3 In add a project form autocomplete on my username, orgs I am member of and repos I have access to, use code from [elastic-med](https://github.com/intermine/intermine-apps-c/blob/master/elastic-med/src/components/search.coffee#L24-L46) to show the first option with Tab doing the autocomplete
|
||||||
- [ ] check that we have not run out of requests to make
|
- [ ] 4 show number of tasks, points, days left, progress bar in the header of a chart page, just like in Assembly
|
||||||
- [ ] what if milestone does not match our strategy?
|
- [ ] 3 be able to specify milestone by name (will nicely show in title), so when we type in `owner/name/name` it should resolve the number
|
||||||
- [ ] web storage and location hash supported by 93% of browsers; good enough?
|
- [ ] 3 trendline is sometimes cutting into axes, but maybe it was just an interpolation
|
||||||
- [ ] create a 500/400/loading system messages
|
- [ ] 3 deal with Firebase timing out, are we still logged-in? Show a warning page telling the people to refresh the browser (adding a button to do the same)
|
||||||
- [ ] mediator `!app/notify/edit` will edit the current notification
|
- [ ] 3 use issue title to determine size
|
||||||
- [ ] handle multiple notifications, for example success on closed milestone and then show a different chart or add a project
|
- [ ] 3 the app bundle (albeit uncompressed) clocks in at 1.5MB, reduce the size (`d3` is huge (use [grunt-smash](https://github.com/cvisco/grunt-smash), [docs here](https://github.com/mbostock/smash/wiki)))
|
||||||
- [ ] be able to logout
|
- [ ] 5 responsive layout hiding header links into a button
|
||||||
- [ ] be able to delete added projects; see the cog at the bottom of tables
|
- [ ] 5 show burndown chart for all milestones
|
||||||
- [ ] how GitHub show commit activity in weekly slots, can we have something like this in the chart? Basically show commits in that week and their users
|
|
||||||
- [ ] add a chart straight from the hero banner
|
###Nice to Have
|
||||||
- [ ] on chart page show a little progress bar in the title
|
|
||||||
- [ ] use tap plugin for `Ractive`
|
- [ ] 1 tell people if they have no due date
|
||||||
- [ ] the app bundle (albeit uncompressed) clocks in at 1.5MB, reduce the size (`d3` is huge (use [grunt-smash](https://github.com/cvisco/grunt-smash), [docs here](https://github.com/mbostock/smash/wiki)), `localForage` not nedded)
|
- [ ] 2 try appending '.0' to milestone titles to pass `semver` validation and compare 4.0, 5.x etc.
|
||||||
- [ ] make the names consistent, reuse code, template etc.
|
- [ ] 2 show an overall text-based status like: all projects on time etc.
|
||||||
- [ ] implement search box that quickly takes you to a chart (and may hide "pro actions")
|
- [ ] 2 web storage and location hash supported by 93% of browsers; good enough? check for support and throw an error
|
||||||
- [ ] make an extensible architecture; for example I might want to enable another trendline in the chart which shows estimated end date if one keeps up the pace of last 5 days.
|
- [ ] 2 check that we have not run out of requests to make, write a test for this, it should throw an error when we are making a request
|
||||||
- [ ] desktop app via `node-gyp`
|
- [ ] 2 index page alert tooltip (like on chart page)
|
||||||
- [ ] when watching, only build changed files and then concat them to make builds much faster
|
- [ ] 3 when fetching subsequent updates, fetch only the last page of issues since some repos are large (2.5MB & 19 pages for `mbostock/d3`); actually that is for all issues, not milestone constrained. So only an issue if we want to see a burnchart for all the issues for a repo
|
||||||
- [ ] smooth animation when transitioning between icons and notifications
|
- [ ] 3 choose your own theme in config
|
||||||
- [ ] show animated lines when drawing the chart
|
- [ ] 3 rotate between percentage progress and points left, fade them in/out
|
||||||
- [ ] highlight changes from past fetch
|
- [ ] 3 make async pages transition so that there is no "jumping" on the page
|
||||||
- [ ] In add a project form autocomplete on my username, orgs I am member of and repos I have access to
|
- [ ] 3 calculate left margin based on the total number of points text width
|
||||||
- [ ] Make sure the padding fits throughout the interface; we have user-select on elements.
|
- [ ] 3 GitHub Pages 404 file
|
||||||
- [ ] Have an app wide of triggering a URL and have named routes too
|
- [ ] 3 show burnchart only for your tasks; this would be a second category of projects & tasks in the dashboard
|
||||||
- [ ] rotate between percentage progress and points left
|
- [ ] 3 smooth animation when transitioning between icons and notifications, sort of there, but not really
|
||||||
- [ ] be able to config options through UI that currently have to be hardcoded in config
|
- [ ] 4 implement search box that quickly takes you to a chart (and may hide "pro actions")
|
||||||
- [ ] choose your own theme
|
- [ ] 4 handle Enterprise editions of GH (signed up in gh dev program)
|
||||||
- [ ] show burndown chart for all milestones
|
- [ ] 4 auto-update the chart (with delay when no activity) when logged-in
|
||||||
- [ ] handle Enterprise editions of GH (signed up in gh dev program)
|
- [ ] 4 show animated lines when drawing the chart
|
||||||
- [ ] auto-update the chart (with delay when no activity) when logged-in
|
- [ ] 5 how GitHub show commit activity in weekly slots, can we have something like this in the chart? Basically show commits in that week and their users
|
||||||
- [ ] add weekly velocity across all projects and a bar chart to that effect
|
- [ ] 5 create fake Firebase endpoint for GitHub auth, or change the endpoint in settings (easier) if people don't trust Google Firebase
|
||||||
- [ ] show a little lightning and a number for today's velocity
|
- [ ] 5 show past commits or due dates like in [this calendar](https://dribbble.com/shots/1736128-Meetups-Page?list=shots&sort=popular&timeframe=now&offset=5)
|
||||||
- [ ] show burnchart only for your tasks; this would be a second category of projects & tasks in the dashboard
|
- [ ] 7 support Jira, Gitlab, Assembly
|
||||||
- [ ] show an overall text-based status like: all projects on time etc.
|
|
||||||
- [ ] until GH fix milestone start date then provide an option to specify it (either do that on GH server or locally); for example a text like this: `starts: 09-10-2014` in the description which we provide regex for
|
|
||||||
- [ ] work on mobile devices
|
|
||||||
- [ ] show velocity number for each member of the team in the corner of the layout (the point is to get better at planning how many tasks can people take on, thus how fast can we work)
|
|
||||||
- [ ] if we have the above, we could get a suggestion as to how many points we are able to go through in the next iteration while keeping everyone at their max capacity. One could almost drag & drop tasks to people and see a live progress of how the ideal trendline will fare based on a known speed of people; or we could be somehow notified that people are maxed out
|
|
||||||
- [ ] show velocity for all team members and how it progresses through time
|
|
||||||
- [ ] points collector - give medals for 1st 3 spots in terms of velocity
|
|
||||||
- [ ] show past commits or due dates like in [this calendar](https://dribbble.com/shots/1736128-Meetups-Page?list=shots&sort=popular&timeframe=now&offset=5)
|
|
||||||
- [ ] support Jira & Gitlab
|
|
||||||
- [ ] when fetching subsequent updates, fetch only the last page of issues since some repos are large (2.5MB & 19 pages for `mbostock/d3`); actually that is for all issues, not milestone constrained. So only an issue if we want to see a burnchart for all the issues for a repo
|
|
||||||
- [ ] if all issue circles are close to each other, make a "master circle" that amalgamates all the issues into one large circle, makes for a prettier view
|
|
||||||
- [ ] make better x-axis date display, otherwise we see all 1s.
|
|
||||||
- [ ] some [fun loading messages](http://www.gamefaqs.com/pc/561176-simcity-4/faqs/22135) from Sim City.
|
|
||||||
- [ ] show number of tasks, points, days left just like in Assembly on chart page
|
|
||||||
- [ ] receive reminders when a due date is nearing and our project is behind schedule; receive a daily digest saying how the progress went in that day/week; these are all ways we can help people answer the question: is my project on track?
|
|
||||||
- [ ] if we save user's tokens we could check data on their behalf, then messaging would work; API could be provided so that others could plug into the data
|
|
||||||
- [ ] derive insights; one part is to see if we are on track, the other is to get better at estimating. If we know when an issue is worked on and when closed, with its accompanying size, we can say which issues went well, and which fared poorly. Then we can visualize a weekly/monthly/per-milestone list of loosers and winners. Perhaps the user can glean a pattern from that.
|
|
||||||
- [ ] create fake Firebase endpoint for GitHub auth, or change the endpoint in settings (easier)
|
|
||||||
- [ ] have an icon that shows a progress for a milestone that can be shown on GitHub README page
|
|
||||||
- [ ] try appending '.0' to milestone titles to pass `semver` validation and compare 4.0, 5.x etc.
|
|
@ -29,8 +29,6 @@ module.exports = new Model
|
|||||||
"datetime": /^(\d{4}-\d{2}-\d{2})T(.*)/
|
"datetime": /^(\d{4}-\d{2}-\d{2})T(.*)/
|
||||||
# How does a size label look like?
|
# How does a size label look like?
|
||||||
"size_label": /^size (\d+)$/
|
"size_label": /^size (\d+)$/
|
||||||
# How do we specify which user/repo/(milestone) we want?
|
|
||||||
"location": /^#!((\/[^\/]+){2,3})$/
|
|
||||||
# Process all issues as one size (ONE_SIZE) or use labels (LABELS).
|
# Process all issues as one size (ONE_SIZE) or use labels (LABELS).
|
||||||
"points": 'ONE_SIZE'
|
"points": 'ONE_SIZE'
|
||||||
# Request pertaining.
|
# Request pertaining.
|
||||||
|
@ -6,7 +6,7 @@ config = require '../../models/config.coffee'
|
|||||||
module.exports =
|
module.exports =
|
||||||
|
|
||||||
# A graph of closed issues.
|
# A graph of closed issues.
|
||||||
# `issues`: issues list
|
# `issues`: closed issues list
|
||||||
# `created_at`: milestone start date
|
# `created_at`: milestone start date
|
||||||
# `total`: total number of points (open & closed issues)
|
# `total`: total number of points (open & closed issues)
|
||||||
actual: (issues, created_at, total) ->
|
actual: (issues, created_at, total) ->
|
||||||
|
@ -4,7 +4,42 @@ lines = require '../src/modules/chart/lines.coffee'
|
|||||||
|
|
||||||
module.exports =
|
module.exports =
|
||||||
|
|
||||||
# TODO: add moar tests.
|
'lines - actual': (done) ->
|
||||||
'lines - na': (done) ->
|
issues = [
|
||||||
assert.equal 1, 1
|
{ 'size': 3, 'date': 2 }
|
||||||
|
{ 'size': 2, 'date': 3 }
|
||||||
|
{ 'size': 1, 'date': 4 }
|
||||||
|
]
|
||||||
|
|
||||||
|
points = ( points for { points } in lines.actual issues, 1, 6 )
|
||||||
|
|
||||||
|
assert.deepEqual points, [ 6, 3, 1, 0 ]
|
||||||
|
|
||||||
|
do done
|
||||||
|
|
||||||
|
'lines - ideal': (done) ->
|
||||||
|
a = '2011-04-01T00:00:00Z'
|
||||||
|
b = '2011-04-03T00:00:00Z'
|
||||||
|
|
||||||
|
line = lines.ideal(a, b, 4)[ 0...3 ]
|
||||||
|
|
||||||
|
assert.deepEqual line, [
|
||||||
|
{ 'date': new Date('2011-04-01T06:00:00Z'), 'points': 4 }
|
||||||
|
{ 'date': new Date('2011-04-02T06:00:00Z'), 'points': 2 }
|
||||||
|
{ 'date': new Date('2011-04-03T06:00:00Z'), 'points': 0 }
|
||||||
|
]
|
||||||
|
|
||||||
|
do done
|
||||||
|
|
||||||
|
'lines - trend': (done) ->
|
||||||
|
issues = [
|
||||||
|
{ 'date': 1, 'points': 4 }
|
||||||
|
{ 'date': 2, 'points': 1 }
|
||||||
|
{ 'date': 3, 'points': 1 }
|
||||||
|
]
|
||||||
|
|
||||||
|
line = (Math.round(points) for { points } in lines.trend(issues, 1, new Date))
|
||||||
|
|
||||||
|
assert.deepEqual line, [ 2, 1 ]
|
||||||
|
|
||||||
do done
|
do done
|
Loading…
x
Reference in New Issue
Block a user