diff --git a/src/main/scala/app/IssuesController.scala b/src/main/scala/app/IssuesController.scala
index d2e4082..0c8b35f 100644
--- a/src/main/scala/app/IssuesController.scala
+++ b/src/main/scala/app/IssuesController.scala
@@ -67,7 +67,7 @@
getComments(owner, name, issueId.toInt),
getIssueLabels(owner, name, issueId.toInt),
(getCollaborators(owner, name) :+ owner).sorted,
- getMilestones(owner, name),
+ getMilestonesWithIssueCount(owner, name),
getLabels(owner, name),
hasWritePermission(owner, name, context.loginAccount),
repository)
@@ -207,7 +207,12 @@
ajaxPost("/:owner/:repository/issues/:id/milestone")(collaboratorsOnly { repository =>
updateMilestoneId(repository.owner, repository.name, params("id").toInt, milestoneId("milestoneId"))
- Ok("updated")
+ milestoneId("milestoneId").map { milestoneId =>
+ getMilestonesWithIssueCount(repository.owner, repository.name)
+ .find(_._1.milestoneId == milestoneId).map { case (_, openCount, closeCount) =>
+ issues.milestones.html.progress(openCount + closeCount, closeCount, false)
+ } getOrElse NotFound
+ } getOrElse Ok()
})
post("/:owner/:repository/issues/batchedit/state")(collaboratorsOnly { repository =>
diff --git a/src/main/twirl/issues/issue.scala.html b/src/main/twirl/issues/issue.scala.html
index 9dcf495..f51c6f8 100644
--- a/src/main/twirl/issues/issue.scala.html
+++ b/src/main/twirl/issues/issue.scala.html
@@ -2,7 +2,7 @@
comments: List[model.IssueComment],
issueLabels: List[model.Label],
collaborators: List[String],
- milestones: List[model.Milestone],
+ milestones: List[(model.Milestone, Int, Int)],
labels: List[model.Label],
hasWritePermission: Boolean,
repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
@@ -46,15 +46,22 @@
@issue.milestoneId.map { milestoneId =>
- @milestones.find(_.milestoneId == milestoneId).map { milestone =>
+ @milestones.collect { case (milestone, _, _) if(milestone.milestoneId == milestoneId) =>
Milestone: @milestone.title
}
}.getOrElse("No milestone")
+
+ @issue.milestoneId.map { milestoneId =>
+ @milestones.collect { case (milestone, openCount, closeCount) if(milestone.milestoneId == milestoneId) =>
+ @issues.milestones.html.progress(openCount + closeCount, closeCount, false)
+ }
+ }
+
@if(hasWritePermission){
@helper.html.dropdown() {
No milestone
- @milestones.map { milestone =>
+ @milestones.map { case (milestone, _, _) =>
@milestone.title
@@ -221,12 +228,15 @@
{
milestoneId: milestoneId
},
- function(){
+ function(data){
+ console.log(data);
$('a.milestone i.icon-ok').attr('class', 'icon-white');
if(milestoneId == ''){
$('#label-milestone').text('No milestone');
+ $('#milestone-progress-area').empty();
} else {
$('#label-milestone').html($('').append('Milestone: ').append($('').text(title)));
+ $('#milestone-progress-area').html(data);
$('a.milestone[data-id=' + milestoneId + '] i').attr('class', 'icon-ok');
}
});
diff --git a/src/main/twirl/issues/list.scala.html b/src/main/twirl/issues/list.scala.html
index 46a0cc6..b028b65 100644
--- a/src/main/twirl/issues/list.scala.html
+++ b/src/main/twirl/issues/list.scala.html
@@ -86,10 +86,8 @@
}
@if(condition.milestoneId.isDefined && condition.milestoneId.get.isDefined){
@milestones.find(_.milestoneId == condition.milestoneId.get.get).map { milestone =>
-
- @if(closedCount > 0){
-
- }
+
+ @_root_.issues.milestones.html.progress(openCount + closedCount, closedCount, false)
@openCount open issues
@if(milestone.closedDate.isDefined){
diff --git a/src/main/twirl/issues/milestones/list.scala.html b/src/main/twirl/issues/milestones/list.scala.html
index 6eedb8f..e213ee7 100644
--- a/src/main/twirl/issues/milestones/list.scala.html
+++ b/src/main/twirl/issues/milestones/list.scala.html
@@ -69,18 +69,7 @@
@closedCount closed - @openCount open
-
- @if(closedCount > 0){
-
- }
-
- @if(closedCount == 0){
- 0%
- } else {
- @((closedCount.toDouble / (openCount + closedCount).toDouble * 100).toInt)%
- }
-
-
+ @progress(openCount + closedCount, closedCount, true)
@if(milestone.description.isDefined){
diff --git a/src/main/twirl/issues/milestones/progress.scala.html b/src/main/twirl/issues/milestones/progress.scala.html
new file mode 100644
index 0000000..b446688
--- /dev/null
+++ b/src/main/twirl/issues/milestones/progress.scala.html
@@ -0,0 +1,15 @@
+@(total: Int, progress: Int, showPercentage: Boolean)
+
+ @if(progress > 0){
+
+ }
+ @if(showPercentage){
+
+ @if(progress == 0){
+ 0%
+ } else {
+ @((progress.toDouble / total.toDouble * 100).toInt)%
+ }
+
+ }
+
diff --git a/src/main/webapp/assets/common/css/gitbucket.css b/src/main/webapp/assets/common/css/gitbucket.css
index 9ef3a0d..ae13c25 100644
--- a/src/main/webapp/assets/common/css/gitbucket.css
+++ b/src/main/webapp/assets/common/css/gitbucket.css
@@ -478,6 +478,15 @@
color: #b00;
}
+div#milestone-progress-area {
+ display: inline-block;
+}
+
+div#milestone-progress-area div.milestone-progress {
+ width: 150px;
+ margin-bottom: -6px;
+}
+
div.milestone-progress {
position: relative;
height: 20px;