Skip to content

Commit

Permalink
show no progress message; closes #93
Browse files Browse the repository at this point in the history
  • Loading branch information
radekstepan committed Jan 26, 2016
1 parent 58a2e80 commit 687a32e
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 44 deletions.
69 changes: 42 additions & 27 deletions public/js/bundle.js

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions public/js/bundle.min.js

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions src/js/components/Chart.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ export default React.createClass({

componentDidMount() {
let milestone = this.props.milestone;

// Skip charts that have nothing to show.
if (milestone.stats.isEmpty) return;

let issues = milestone.issues;
// Total number of points in the milestone.
let total = issues.open.size + issues.closed.size;
Expand Down
10 changes: 6 additions & 4 deletions src/js/modules/stats.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@ export default (milestone) => {
// Progress in points.
a = milestone.issues.closed.size;
b = milestone.issues.open.size;
if (a + b > 0) {
if (a) {
isEmpty = false;
points = progress(a, b);
if (points === 100) isDone = true;
if (a + b > 0) {
points = progress(a, b);
if (points === 100) isDone = true;
}
}

// Check that milestone hasn't been created after issue close; #100.
Expand Down Expand Up @@ -60,5 +62,5 @@ export default (milestone) => {
// If we have closed all issues, we are "on time".
if (isDone) isOnTime = true;

return { isDone, days, isOnTime, isOverdue, 'progress': { points, time } };
return { isOverdue, isOnTime, isDone, isEmpty, days, 'progress': { points, time } };
};
31 changes: 20 additions & 11 deletions src/js/stores/projectsStore.js
Original file line number Diff line number Diff line change
Expand Up @@ -241,24 +241,33 @@ class ProjectsStore extends Store {
}

// Talk about the stats of a milestone.
notify(stats) {
if (stats.isEmpty) {
return actions.emit('system.notify', {
'text': 'This milestone has no issues',
'type': 'warn',
'system': true,
'ttl': null
});
notify(milestone) {
if (milestone.stats.isEmpty) {
let left;
if (left = milestone.issues.open.size) {
return actions.emit('system.notify', {
'text': `No progress has been made, ${left} point${(left > 1) ? 's' : ''} left`,
'system': true,
'ttl': null
});
} else {
return actions.emit('system.notify', {
'text': 'This milestone has no issues',
'type': 'warn',
'system': true,
'ttl': null
});
}
}

if (stats.isDone) {
if (milestone.stats.isDone) {
actions.emit('system.notify', {
'text': 'This milestone is complete',
'type': 'success'
});
}

if (stats.isOverdue) {
if (milestone.stats.isOverdue) {
actions.emit('system.notify', {
'text': 'This milestone is overdue',
'type': 'warn'
Expand All @@ -273,7 +282,7 @@ class ProjectsStore extends Store {
_.extend(milestone, { 'stats': stats(milestone) });

// Notify?
if (say) this.notify(milestone.stats);
if (say) this.notify(milestone);

// We are supposed to exist already.
if ((i = this.findIndex(project)) < 0) { throw 500; }
Expand Down
17 changes: 17 additions & 0 deletions test/stats.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,23 @@ export default {
done();
},

'stats - has no progress been made?': (done) => {
let milestone = {
'issues': {
'open': {
'size': 1
},
'closed': {
'size': 0
}
}
};

assert.isTrue(stats(milestone).isEmpty);

done();
},

'stats - is milestone done?': (done) => {
let milestone = {
'issues': {
Expand Down

0 comments on commit 687a32e

Please sign in to comment.