Having a default priority is now optional.

This commit is contained in:
Istvan Meszaros
2017-06-11 12:12:41 +02:00
parent 68cb95e758
commit 9ffae4241d
6 changed files with 25 additions and 15 deletions

View File

@@ -72,7 +72,7 @@ trait PrioritiesControllerBase extends ControllerBase {
})
ajaxPost("/:owner/:repository/issues/priorities/default")(writableUsersOnly { (repository) =>
setDefaultPriority(repository.owner, repository.name, params("priorityId").toInt)
setDefaultPriority(repository.owner, repository.name, priorityId("priorityId"))
Ok()
})
@@ -81,6 +81,8 @@ trait PrioritiesControllerBase extends ControllerBase {
Ok()
})
val priorityId: String => Option[Int] = (key: String) => params.get(key).flatMap(_.toIntOpt)
/**
* Constraint for the identifier such as user name, repository name or page name.
*/

View File

@@ -24,14 +24,12 @@ trait PrioritiesService {
.map(m => m + 1)
.getOrElse(0)
val isDefault = getDefaultPriority(owner, repository).isEmpty
Priorities returning Priorities.map(_.priorityId) insert Priority(
userName = owner,
repositoryName = repository,
priorityName = priorityName,
description = StringUtil.emptyToNone(description),
isDefault = isDefault,
isDefault = false,
ordering = ordering,
color = color
)
@@ -71,16 +69,16 @@ trait PrioritiesService {
.headOption
}
def setDefaultPriority(owner: String, repository: String, priorityId: Int)(implicit s: Session): Unit = {
def setDefaultPriority(owner: String, repository: String, priorityId: Option[Int])(implicit s: Session): Unit = {
Priorities
.filter(_.byRepository(owner, repository))
.filter(_.isDefault)
.map(_.isDefault)
.update(false)
Priorities
.filter(_.byPrimaryKey(owner, repository, priorityId))
priorityId.foreach(id => Priorities
.filter(_.byPrimaryKey(owner, repository, id))
.map(_.isDefault)
.update(true)
.update(true))
}
}

View File

@@ -84,6 +84,6 @@ trait RepositoryCreationService {
createPriority(userName, repositoryName, "important", "Issues can be shipped with a final product, but should be reviewed before the next release.", "fccd29")
createPriority(userName, repositoryName, "default", "Default.", "acacac")
setDefaultPriority(userName, repositoryName, getPriority(userName, repositoryName, "default").get.priorityId)
setDefaultPriority(userName, repositoryName, getPriority(userName, repositoryName, "default").map(_.priorityId))
}
}

View File

@@ -103,11 +103,21 @@ function updatePriorityCount() {
}
function setDefaultPriority(priorityId){
var $a = $('a[data-id="' + priorityId + '"].priority-default');
var isDefault = $a.data('default');
$.post('@helpers.url(repository)/issues/priorities/default',
{ priorityId: priorityId },
{ priorityId: isDefault ? '' : priorityId },
function(){
$('.priority-default').removeClass('priority-default-selected');
$('a[data-id="' + priorityId + '"] .priority-default').addClass('priority-default-selected');
$('.priority-default')
.removeClass('priority-default-selected')
.data('default', false)
.attr('title', 'Set as default');
if (!isDefault) {
$a
.addClass('priority-default-selected')
.data('default', true)
.attr('title', 'Unset as default');
}
}
);
}

View File

@@ -24,7 +24,7 @@
<div class="col-md-1">
<div class="pull-right">
@if(hasWritePermission){
<a href="javascript:void(0);" onclick="setDefaultPriority(@priority.priorityId)" data-id="@priority.priorityId"><i class="octicon octicon-star priority-default@if(priority.isDefault){ priority-default-selected}" title="@if(priority.isDefault){Default} else {Set as default}"></i></a>
<a href="javascript:void(0);" onclick="setDefaultPriority(@priority.priorityId)" data-id="@priority.priorityId" data-default="@priority.isDefault" class="priority-default@if(priority.isDefault){ priority-default-selected}" title="@if(priority.isDefault){Unset as default} else {Set as default}"><i class="octicon octicon-star"></i></a>
} else if(priority.isDefault) {
<i class="octicon octicon-star priority-default priority-default-selected" title="Default"></i>
}

View File

@@ -965,12 +965,12 @@ pre.reset.discussion-item-content-text{
font-size: 2em;
}
.priority-default {
.priority-default .octicon {
font-size: 1.5em;
color: #ccc;
}
.priority-default-selected {
.priority-default-selected .octicon {
color: #3c8dbc;
}