mirror of
https://github.com/status-im/burnchart.git
synced 2025-03-02 11:00:33 +00:00
is done and is overdue stats
This commit is contained in:
parent
97ffdd4173
commit
134f8dc635
File diff suppressed because one or more lines are too long
@ -6,24 +6,32 @@ progress = (a, b) -> 100 * (a / (b + a))
|
||||
# Calculate the stats for a milestone.
|
||||
# Is it on time? What is the progress?
|
||||
module.exports = (milestone) ->
|
||||
isDone = no ; isOnTime = yes ; isOverdue = no
|
||||
|
||||
# Progress in points.
|
||||
points = progress milestone.issues.closed.size, milestone.issues.open.size
|
||||
|
||||
isDone = yes if points is 100
|
||||
|
||||
# Milestones with no due date are always on track.
|
||||
return { 'isOnTime': yes, 'progress': { points } } unless milestone.due_on
|
||||
return { isOverdue, isOnTime, isDone, 'progress': { points } } unless milestone.due_on
|
||||
|
||||
a = +new Date milestone.created_at
|
||||
b = +new Date
|
||||
c = +new Date milestone.due_on
|
||||
|
||||
# Overdue?
|
||||
isOverdue = yes if b > c
|
||||
|
||||
# Progress in time.
|
||||
time = progress b - a, c - b
|
||||
|
||||
# How many days is 1% of the time?
|
||||
days = (moment(b).diff(moment(a), 'days')) / 100
|
||||
|
||||
# Are we on time?
|
||||
isOnTime = points > time
|
||||
|
||||
{
|
||||
'isOnTime': points > time
|
||||
isDone, days, isOnTime, isOverdue
|
||||
'progress': { points, time }
|
||||
'days': days
|
||||
}
|
@ -11,14 +11,14 @@
|
||||
{{# { p: projects.list[index[0]] } }}
|
||||
{{#if p.owner == project.owner && p.name == project.name }}
|
||||
{{# { milestone: project.milestones[index[1]] } }}
|
||||
<tr>
|
||||
<tr class="{{#if milestone.stats.isDone}}done{{/if}}">
|
||||
<td>
|
||||
<a class="milestone" href="#{{project.owner}}/{{project.name}}/{{milestone.number}}">{{ milestone.title }}</a>
|
||||
</td>
|
||||
<td style="width:1%">
|
||||
<div class="progress">
|
||||
<span class="percent">{{Math.floor(milestone.stats.progress.points)}}%</span>
|
||||
<span class="due">{{{ format.due(milestone.due_on) }}}</span>
|
||||
<span class="due {{#if milestone.stats.isOverdue}}red{{/if}}">{{{ format.due(milestone.due_on) }}}</span>
|
||||
<div class="outer bar">
|
||||
<div class="inner bar {{(milestone.stats.isOnTime) ? 'green' : 'red'}}" style="width:{{milestone.stats.progress.points}}%"></div>
|
||||
</div>
|
||||
|
@ -21,7 +21,7 @@
|
||||
{{# { project: projects.list[index[0]] } }}
|
||||
{{#with project}}
|
||||
{{# { milestone: project.milestones[index[1]] } }}
|
||||
<tr>
|
||||
<tr class="{{#if milestone.stats.isDone}}done{{/if}}">
|
||||
<td class="repo">
|
||||
<a class="project" href="#{{owner}}/{{name}}">{{owner}}/{{name}}</a>
|
||||
</td>
|
||||
@ -31,7 +31,7 @@
|
||||
<td style="width:1%">
|
||||
<div class="progress">
|
||||
<span class="percent">{{Math.floor(milestone.stats.progress.points)}}%</span>
|
||||
<span class="due">{{{ format.due(milestone.due_on) }}}</span>
|
||||
<span class="due {{#if milestone.stats.isOverdue}}red{{/if}}">{{{ format.due(milestone.due_on) }}}</span>
|
||||
<div class="outer bar">
|
||||
<div class="inner bar {{(milestone.stats.isOnTime) ? 'green' : 'red'}}" style="width:{{milestone.stats.progress.points}}%"></div>
|
||||
</div>
|
||||
@ -49,59 +49,4 @@
|
||||
<div class="footer">
|
||||
<a href="#"><Icons icon="cog"/> Edit</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<tr>
|
||||
<td><a class="repo" href="#">radekstepan/disposable</a></td>
|
||||
<td><span class="milestone">Milestone 1.0 <span class="icon down-open"></span></td>
|
||||
<td>
|
||||
<div class="progress">
|
||||
<span class="percent">40%</span>
|
||||
<span class="due">due on Friday</span>
|
||||
<div class="outer bar">
|
||||
<div class="inner bar red" style="width:40%"></div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="done">
|
||||
<td><a class="repo" href="#">radekstepan/burnchart</a></td>
|
||||
<td><span class="milestone">Beta Milestone <span class="icon down-open"></span></a></td>
|
||||
<td>
|
||||
<div class="progress">
|
||||
<span class="percent">100%</span>
|
||||
<span class="due">due tomorrow</span>
|
||||
<div class="outer bar">
|
||||
<div class="inner bar green" style="width:100%"></div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="repo" href="#">intermine/intermine</a></td>
|
||||
<td><span class="milestone">Emma Release 96 <span class="icon down-open"></span></a></td>
|
||||
<td>
|
||||
<div class="progress">
|
||||
<span class="percent">27%</span>
|
||||
<span class="due">due in 2 weeks</span>
|
||||
<div class="outer bar">
|
||||
<div class="inner bar red" style="width:27%"></div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a class="repo" href="#">microsoft/windows</a></td>
|
||||
<td><span class="milestone">RC 9 <span class="icon down-open"></span></a></td>
|
||||
<td>
|
||||
<div class="progress">
|
||||
<span class="percent">90%</span>
|
||||
<span class="due red">overdue by a month</span>
|
||||
<div class="outer bar">
|
||||
<div class="inner bar red" style="width:90%"></div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
-->
|
||||
</div>
|
Loading…
x
Reference in New Issue
Block a user