init chart page

This commit is contained in:
Radek Stepan 2014-10-11 13:48:17 -07:00
parent 0d06507bef
commit 33e0e2647e
5 changed files with 75 additions and 39 deletions

View File

@ -3,6 +3,7 @@
##Release: MVP
- [ ] show chart page
- [ ] pick consistent module naming scheme: index, project, milestone?
###GitHub

View File

@ -1,13 +1,15 @@
<div id="title">
<div class="wrap">
<h2 class="title">{{ format.title(milestone.title) }}</h2>
<span class="sub">{{{ format.due(milestone.due_on) }}}</span>
<p class="description">{{{ format.markdown(milestone.description) }}}</p>
</div>
</div>
{{#ready}}
<div intro="fade">
<div id="title">
<div class="wrap">
<h2 class="title">{{ format.title(milestone.title) }}</h2>
<span class="sub">{{{ format.due(milestone.due_on) }}}</span>
<p class="description">{{{ format.markdown(milestone.description) }}}</p>
</div>
</div>
<div id="content" class="wrap">
<div id="chart">
<div id="svg"></div>
<div id="content" class="wrap">
<Chart milestone="{{milestone}}"/>
</div>
</div>
</div>
{{/ready}}

View File

@ -1,14 +1,17 @@
#!/usr/bin/env coffee
config = require '../models/config'
line = require '../modules/line'
module.exports =
# Render the chart.
render: ([ actual, ideal, trendline ], cb) ->
document.querySelector('#svg').innerHTML = ''
module.exports = Ractive.extend
'name': 'views/chart'
onconstruct: ->
console.log @data.milestone
onrender: ->
return console.log 'Use `line` to populate our data, could move to our scope too'
# Get available space.
{ height, width } = document.querySelector('#chart').getBoundingClientRect()
{ height, width } = this.el.getBoundingClientRect()
margin = { 'top': 30, 'right': 30, 'bottom': 40, 'left': 50 }
width -= margin.left + margin.right
@ -121,6 +124,4 @@ module.exports =
.attr("cy", ({ points }) -> y points )
.attr("r", ({ radius }) -> 5 ) # fixed for now
.on('mouseover', tooltip.show)
.on('mouseout', tooltip.hide)
cb null
.on('mouseout', tooltip.hide)

View File

@ -1,7 +1,11 @@
system = require '../../models/system'
milestone = require '../../modules/milestone'
project = require '../../modules/project'
format = require '../../utils/format'
Chart = require '../chart.coffee'
projects = require '../../models/projects'
system = require '../../models/system'
milestones = require '../../modules/github/milestone'
issues = require '../../modules/github/issues'
mediator = require '../../modules/mediator'
format = require '../../utils/format'
module.exports = Ractive.extend
@ -9,24 +13,52 @@ module.exports = Ractive.extend
'template': require '../../templates/pages/chart'
'adapt': [ Ractive.adaptors.Ractive ]
'components': { Chart }
'data': { format }
'data':
'format': format
'ready': no
onrender: ->
return
[ owner, name, milestone ] = @get 'route'
route = { owner, name, milestone }
document.title = "#{owner}/#{name}/#{milestone}"
milestone.get route, (err, warn, obj) =>
throw err if err
throw warn if warn
# Save the milestone on the route.
@set 'milestone', obj
route.milestone = obj
# Get the associated project.
project = projects.find { owner, name }
project route, (err) ->
throw err if err
# Should not happen...
throw 500 unless project
# Do we have this milestone already?
milestone = _.find project.milestones, { 'number': milestone }
return @set { milestone, 'ready': yes } if milestone
# We are loading the milestones then.
done = do system.async
fetchMilestone = (cb) ->
milestones.fetch project, cb
fetchIssues = (milestone, cb) ->
issues.fetchAll project, (err, obj) ->
cb err, _.extend milestone, { 'issues': obj }
async.waterfall [
# Get the milestone.
fetchMilestone,
# Then all its issues.
fetchIssues
], (err, data) =>
do done
return mediator.fire '!app/notify', {
'text': do err.toString
'type': 'alert'
'system': yes
'ttl': null
} if err
# Save the milestone.
@set
'milestone': data
'ready': yes