mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-23 19:14:06 +01:00
add milestone issue view ui
This commit is contained in:
parent
9100786beb
commit
4a4392192b
3 changed files with 119 additions and 8 deletions
|
@ -1441,7 +1441,7 @@ html, body {
|
||||||
margin-left: .8em;
|
margin-left: .8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#issue .assignee.dropdown-menu, #issue .assignee ul {
|
#issue .assignee.dropdown-menu, #issue .assignee ul, #issue .milestone ul {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
min-width: 300px;
|
min-width: 300px;
|
||||||
|
@ -1451,17 +1451,33 @@ html, body {
|
||||||
min-width: 160px;
|
min-width: 160px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#issue .issue-bar .assignee .dropdown-menu{
|
#issue .issue-bar .assignee .dropdown-menu, #issue .issue-bar .milestone .dropdown-menu {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#issue .assignee li {
|
#issue .assignee li, #issue .milestone li.clear-milestone {
|
||||||
padding: 4px 12px;
|
padding: 4px 12px;
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#issue .assignee li:hover {
|
#issue .milestone .milestone-item {
|
||||||
|
padding: 8px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#issue .milestone li.milestone-item {
|
||||||
|
border-bottom: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
#issue .milestone li.milestone-item:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#issue .milestone .milestone-item p {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#issue .assignee li:hover, #issue .milestone li.clear-milestone:hover, #issue .milestone li.milestone-item:hover {
|
||||||
background-color: #e8f0ff;
|
background-color: #e8f0ff;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
@ -1474,7 +1490,7 @@ html, body {
|
||||||
|
|
||||||
#issue .issue-bar > div {
|
#issue .issue-bar > div {
|
||||||
padding-bottom: 8px;
|
padding-bottom: 8px;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 40px;
|
||||||
border-bottom: 1px solid #CCC;
|
border-bottom: 1px solid #CCC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1482,11 +1498,26 @@ html, body {
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#issue .issue-bar .assignee .action{
|
#issue .issue-bar .assignee .action, #issue .issue-bar .milestone .action {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-top: -8px;
|
margin-top: -8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#issue .issue-bar .milestone .completion {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#issue .issue-bar .milestone .completion span {
|
||||||
|
display: block;
|
||||||
|
height: 12px;
|
||||||
|
background-color: #77c64a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#issue .issue-bar .milestone .nav-tabs a {
|
||||||
|
padding: 4px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
/* wrapper and footer */
|
/* wrapper and footer */
|
||||||
|
|
||||||
#wrapper {
|
#wrapper {
|
||||||
|
|
|
@ -528,7 +528,7 @@ function initIssue() {
|
||||||
var $this = $(this);
|
var $this = $(this);
|
||||||
$this.toggleAjax(function (resp) {
|
$this.toggleAjax(function (resp) {
|
||||||
$($this.data("preview")).html(resp);
|
$($this.data("preview")).html(resp);
|
||||||
},function(){
|
}, function () {
|
||||||
$($this.data("preview")).html("no content");
|
$($this.data("preview")).html("no content");
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
@ -569,6 +569,40 @@ function initIssue() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// milestone
|
||||||
|
|
||||||
|
$('.issue-bar .dropdown-menu a[data-toggle="tab"]').on("click", function (e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
$(this).tab('show');
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
var $m = $('.milestone');
|
||||||
|
if ($m.data("milestone") > 0) {
|
||||||
|
$('.clear-milestone').toggleShow();
|
||||||
|
}
|
||||||
|
$('.milestone', '#issue').on('click', 'li.milestone-item', function () {
|
||||||
|
var id = $(this).data("id");
|
||||||
|
if (is_issue_bar) {
|
||||||
|
var m = $m.data("milestone");
|
||||||
|
if (id != m) {
|
||||||
|
$.post($m.data("ajax"), {
|
||||||
|
issue: $('#issue').data("id"),
|
||||||
|
milestone: id
|
||||||
|
}, function (json) {
|
||||||
|
if (json.ok) {
|
||||||
|
window.location.reload();
|
||||||
|
if (id > 0) {
|
||||||
|
$('.clear-milestone').toggleShow();
|
||||||
|
} else {
|
||||||
|
$('.clear-milestone').toggleHide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function initRelease() {
|
function initRelease() {
|
||||||
|
|
|
@ -100,6 +100,52 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="issue-bar col-md-2">
|
<div class="issue-bar col-md-2">
|
||||||
|
<div class="milestone" data-milestone="0" data-ajax="{url}">
|
||||||
|
<div class="pull-right action">
|
||||||
|
<button class="btn btn-default btn-sm" data-toggle="dropdown">
|
||||||
|
<i class="fa fa-check-square-o"></i>
|
||||||
|
<span class="caret"></span>
|
||||||
|
</button>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
|
<ul class="list-unstyled">
|
||||||
|
<li data-id="0" class="clear-milestone hidden"><i class="fa fa-times-circle-o"></i> Clear milestone </li>
|
||||||
|
<li class="milestone-list">
|
||||||
|
<ul class="nav nav-tabs" data-init="tabs">
|
||||||
|
<li class="active"><a href="#milestone-open" data-toggle="tab">Open</a></li>
|
||||||
|
<li><a href="#milestone-close" data-toggle="tab">Closed</a></li>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content">
|
||||||
|
<div class="tab-pane active" id="milestone-open">
|
||||||
|
<p class="milestone-item">Nothing to show</p>
|
||||||
|
<ul class="list-unstyled">
|
||||||
|
<li class="milestone-item" data-id="1">
|
||||||
|
<p><strong>Milestone name</strong></p>
|
||||||
|
<p>due to 3 days later</p>
|
||||||
|
</li>
|
||||||
|
<li class="milestone-item" data-id="1">
|
||||||
|
<p><strong>Milestone name</strong></p>
|
||||||
|
<p>due to 3 days later</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="milestone-close">
|
||||||
|
<ul class="list-unstyled">
|
||||||
|
<li class="milestone-item" data-id="1">
|
||||||
|
<p><strong>Milestone name</strong></p>
|
||||||
|
<p>closed 3 days ago</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h4>Milestone</h4>
|
||||||
|
<p class="completion"><span style="width:80%"> </span></p>
|
||||||
|
<p class="name"><strong><a href="#">Milestone name</a></strong></p>
|
||||||
|
<p class="name">No milestone</p>
|
||||||
|
</div>
|
||||||
<div class="assignee" data-assigned="{{if .Issue.Assignee}}{{.Issue.Assignee.Id}}{{else}}0{{end}}" data-ajax="{{.Issue.Index}}/assignee">{{if .IsRepositoryOwner}}
|
<div class="assignee" data-assigned="{{if .Issue.Assignee}}{{.Issue.Assignee.Id}}{{else}}0{{end}}" data-ajax="{{.Issue.Index}}/assignee">{{if .IsRepositoryOwner}}
|
||||||
<div class="pull-right action">
|
<div class="pull-right action">
|
||||||
<button type="button" class="dropdown-toggle btn btn-default btn-sm" data-toggle="dropdown">
|
<button type="button" class="dropdown-toggle btn btn-default btn-sm" data-toggle="dropdown">
|
||||||
|
@ -110,7 +156,7 @@
|
||||||
<ul class="list-unstyled">
|
<ul class="list-unstyled">
|
||||||
<li data-uid="0" class="clear-assignee hidden"><i class="fa fa-times-circle-o"></i> Clear assignee</li>
|
<li data-uid="0" class="clear-assignee hidden"><i class="fa fa-times-circle-o"></i> Clear assignee</li>
|
||||||
{{range .Collaborators}}
|
{{range .Collaborators}}
|
||||||
<li data-uid="{{.Id}}"><img src="{{.AvatarLink}}"><strong>{{.Name}}</strong> {{.FullName}}</li>
|
<li data-uid="{{.Id}}"><img src="{{.AvatarLink}}"><strong>{{.Name}}</strong></li>
|
||||||
{{end}}
|
{{end}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue