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;