This commit is contained in:
2025-07-14 11:50:52 +02:00
parent 038cf83d85
commit b07cbc5bf4
5 changed files with 53 additions and 8 deletions

View File

@ -31,7 +31,7 @@ class Issue
private int $rowissue = 0;
#[ORM\Column(nullable: true)]
private string $color = '';
private ?string $color = null;
#[ORM\ManyToOne(targetEntity: Project::class, inversedBy: 'issues')]
#[ORM\JoinColumn(nullable: false)]
@ -130,7 +130,9 @@ class Issue
public function getColor(): ?string
{
return $this->rowsprint;
if($this->color) return $this->color;
elseif($this->parent) return $this->parent->getColor();
else return null;
}
public function setColor(?string $color): static

View File

@ -6,6 +6,7 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\OptionsResolver\OptionsResolver;
class SelbgType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver): void

View File

@ -6,7 +6,7 @@
{% endblock %}
{% block title %}
Modification Issue = {{title}}
= Modification Issue = {{title}}
{% endblock %}
{% block body %}
@ -27,6 +27,7 @@ Modification Issue = {{title}}
<div class="col-md-6 mx-auto">
<div class="card mt-3">
<div class="card-header">Information</div>
{{ form_row(form.color) }}
<div class="card-body">
</div>
</div>

View File

@ -4,7 +4,6 @@
<h5 style="flex-grow:1">#{{ issue.redmine.id }} = {{ issue.redmine.subject }}</h5>
<a href="{{redmineUrl}}/issues/{{issue.id}}" target="_blank" class="btn btn-primary"><i class="fas fa-eye"></i></a>
<div class="btn btn-secondary" onClick="hideIssue()"><i class="fas fa-window-close"></i></div>
</div>
<div class="d-flex">
@ -17,6 +16,8 @@
{% endfor %}
{% endif %}
</div>
<div><a href="{{path("app_issue_update",{id:issue.id})}}">Modifier</a></div>
</div>
<div>

View File

@ -16,12 +16,14 @@
z-index: 1000;
}
main {
padding-top:80px;
}
content {
padding:0px;
overflow:auto;
}
.issueContainer {
@ -42,6 +44,7 @@
.scrumContainer {
display:none;
padding-left:300px;
width:10000px;
}
.containerStatus{
@ -313,7 +316,7 @@
</div>
{% for issue in project.issues %}
<div class="issueCard card tracker{{issue.redmine.tracker.id}} category{{(issue.redmine.category is defined?issue.redmine.category.id:'0') }}" data-status='{{issue.redmine.status.id}}' data-sprint='{{issue.rowsprint}}' data-version='{{(issue.redmine.fixed_version is defined?issue.redmine.fixed_version.id:'')}}' data-id='{{issue.id}}'>
<div class="issueCard {{issue.color}} card tracker{{issue.redmine.tracker.id}} category{{(issue.redmine.category is defined?issue.redmine.category.id:'0') }}" data-status='{{issue.redmine.status.id}}' data-sprint='{{issue.rowsprint}}' data-version='{{(issue.redmine.fixed_version is defined?issue.redmine.fixed_version.id:'')}}' data-id='{{issue.id}}'>
<div class='issueHeader'>
<div class='issueId'>#{{issue.id}}</div>
<div class='issueTitle'>
@ -665,6 +668,11 @@
$sourceContainer = ui.item.parent();
$movedItem = ui.item;
originalIndex = ui.item.index();
enableAutoScroll($(window)); // ou remplace par ton conteneur scrollable
},
stop: function () {
disableAutoScroll();
},
update: function (event, ui) {
@ -725,7 +733,39 @@
}
});
let autoScrollInterval = null;
function enableAutoScroll($container) {
$(document).on('mousemove.autoScroll', function (e) {
const scrollMargin = 50; // px depuis le bord de la fenêtre
const scrollSpeed = 20; // px à chaque tick
const mouseY = e.clientY;
const windowHeight = window.innerHeight;
// Scroll vers le haut
if (mouseY < scrollMargin) {
clearInterval(autoScrollInterval);
autoScrollInterval = setInterval(() => {
$container.scrollTop($container.scrollTop() - scrollSpeed);
}, 50);
}
// Scroll vers le bas
else if (mouseY > windowHeight - scrollMargin) {
clearInterval(autoScrollInterval);
autoScrollInterval = setInterval(() => {
$container.scrollTop($container.scrollTop() + scrollSpeed);
}, 50);
} else {
clearInterval(autoScrollInterval);
}
});
}
function disableAutoScroll() {
$(document).off('mousemove.autoScroll');
clearInterval(autoScrollInterval);
}
</script>
{% endblock %}